leetcode 136. 一度しか現れない数字
1167 ワード
空でない整数配列が与えられ、ある要素が1回しか現れない以外は、各要素が2回現れます.それが一度しか現れなかった要素を見つけます.
説明:
あなたのアルゴリズムは線形時間の複雑さを持つべきです.余分なスペースを使わずに実現できますか?
例1:
例2:
/////
考え方:この問題の私の解法はハッシュマッピングを用いて問題を解くことです.もし与えられた整数配列の要素が他の配列の要素とマッピング関係があるならば、例えば:
所与の集合A中の元素a,b,c,d,eは、それぞれ集合B中の1,2,3,4,5に対して与えられる.A=f(B)があれば、私はAを遍歴するだけで、すべての関係を知ることができます.
例えば、配列Aには、ある要素とBが1回しかマッピングされていないほか、各要素が2回マッピングされているという意味です.
//////////////////////////////////////////////////////////////////////////////////////////////////
説明:
あなたのアルゴリズムは線形時間の複雑さを持つべきです.余分なスペースを使わずに実現できますか?
例1:
: [2,2,1]
: 1
例2:
: [4,1,2,1,2]
: 4
/////
考え方:この問題の私の解法はハッシュマッピングを用いて問題を解くことです.もし与えられた整数配列の要素が他の配列の要素とマッピング関係があるならば、例えば:
所与の集合A中の元素a,b,c,d,eは、それぞれ集合B中の1,2,3,4,5に対して与えられる.A=f(B)があれば、私はAを遍歴するだけで、すべての関係を知ることができます.
例えば、配列Aには、ある要素とBが1回しかマッピングされていないほか、各要素が2回マッピングされているという意味です.
//////////////////////////////////////////////////////////////////////////////////////////////////
class Solution {
public int singleNumber(int[] nums) {
int[] a = new int[100000] ; // (-49999,50000)
//num[] 0 a[0]-a[50000], 0 a[50001]-a[99999]
for(int i =0;i50000) re -=100000;
return re ;
}
}