アルゴリズム:配列に1回のみ表示される数値
空でない整数配列が与えられ、ある要素が1回しか現れない以外は、各要素が2回現れます.それが一度しか現れなかった要素を見つけます.
説明:
あなたのアルゴリズムは線形時間の複雑さを持つべきです.余分なスペースを使わずに実現できますか?
例1:
例2:
タイトル元住所:
https://leetcode-cn.com/explo...
もしあなたがもっと良い方法があれば、分かち合って、一緒に勉強して、一緒に進歩することができます.
関連記事:
並べ替え配列から重複項目を削除Javaで単純なアルゴリズムで文字列内の整数の個数を統計する
内容が悪くないと思ったら、私に注目してください.微信公衆番号:志兄(ID:zhige-me)はあなたと出会って、一緒に成長することを期待しています.
説明:
あなたのアルゴリズムは線形時間の複雑さを持つべきです.余分なスペースを使わずに実現できますか?
例1:
: [2,2,1]
: 1
例2:
: [4,1,2,1,2]
: 4
タイトル元住所:
https://leetcode-cn.com/explo...
/**
* Map key, value
* 1
*/
public int singleNumber(int[] nums) {
Map map = new HashMap<>();
for (int num : nums) {
if (!map.containsKey(num)) {
map.put(num, 1);
} else {
map.put(num, map.get(num) + 1);
}
}
return map.entrySet().stream().filter(r -> r.getValue() == 1).findFirst().get().getKey();
}
/**
* , Set, Set , ,
* 。
*/
public int singleNumber1(int[] nums) {
Set set = new HashSet<>();
for (int num : nums) {
if (!set.remove(num)) {
set.add(num);
}
}
return set.iterator().next();
}
/**
* (^) :0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0( 0, 1)
* , , 0, 0 ,
* 。
*/
public int singleNumber2(int[] nums) {
int r = 0;
for (int num : nums) {
r ^= num;
}
return r;
}
もしあなたがもっと良い方法があれば、分かち合って、一緒に勉強して、一緒に進歩することができます.
関連記事:
並べ替え配列から重複項目を削除Javaで単純なアルゴリズムで文字列内の整数の個数を統計する
内容が悪くないと思ったら、私に注目してください.微信公衆番号:志兄(ID:zhige-me)はあなたと出会って、一緒に成長することを期待しています.