java二维数组数字数显次数_【每日一题】118.数组中数字出现的次数
生活随笔
收集整理的這篇文章主要介紹了
java二维数组数字数显次数_【每日一题】118.数组中数字出现的次数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關注我們獲取更多計算機考研信息
????public?int?singleNumber(int[]?nums)?{//本算法同樣適用于數組nums中存在負數的情況
????????if(nums.length==0)?return?-1;//輸入數組長度不符合要求,返回-1;
????????int[]?bitSum?=?new?int[32];//java?int類型有32位,其中首位為符號位
????????int?res=0;
????????for(int?num:nums){
????????????int?bitMask=1;//需要在這里初始化,不能和res一起初始化
????????????for(int?i=31;i>=0;i--){//bitSum[0]為符號位
????????????????//這里同樣可以通過num的無符號右移>>>來實現,否則帶符號右移(>>)左側會補符號位,對于負數會出錯。
????????????????//但是不推薦這樣做,最好不要修改原數組nums的數據
????????????????if((num&bitMask)!=0)?bitSum[i]++;//這里判斷條件也可以寫為(num&bitMask)==bitMask,而不是==1
????????????????bitMask=bitMask<<1;//左移沒有無符號、帶符號的區別,都是在右側補0
????????????}
????????}
????????for(int?i=0;i<32;i++){//這種做法使得本算法同樣適用于負數的情況
????????????res=res<<1;
????????????res+=bitSum[i]%3;//這兩步順序不能變,否則最后一步會多左移一次
????????}
????????return?res;
????}
}
? 今日習題
在一個數組 nums 中除一個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。
示例 1:
輸入:nums = [3,4,3,3]
輸出:4
示例 2:
輸入:nums = [9,1,7,9,7,9,7]
輸出:1
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
……? 思考時間……
如果你想好答案了
請查看解題思路和代碼實現
▼
我們需要一個長度為32的輔助數組存儲二進制表示的每一位的和。由于數組的長度是固定的,因此空間效率是O(1)。
·代碼實現·
public?class?Solution56_2?{????public?int?singleNumber(int[]?nums)?{//本算法同樣適用于數組nums中存在負數的情況
????????if(nums.length==0)?return?-1;//輸入數組長度不符合要求,返回-1;
????????int[]?bitSum?=?new?int[32];//java?int類型有32位,其中首位為符號位
????????int?res=0;
????????for(int?num:nums){
????????????int?bitMask=1;//需要在這里初始化,不能和res一起初始化
????????????for(int?i=31;i>=0;i--){//bitSum[0]為符號位
????????????????//這里同樣可以通過num的無符號右移>>>來實現,否則帶符號右移(>>)左側會補符號位,對于負數會出錯。
????????????????//但是不推薦這樣做,最好不要修改原數組nums的數據
????????????????if((num&bitMask)!=0)?bitSum[i]++;//這里判斷條件也可以寫為(num&bitMask)==bitMask,而不是==1
????????????????bitMask=bitMask<<1;//左移沒有無符號、帶符號的區別,都是在右側補0
????????????}
????????}
????????for(int?i=0;i<32;i++){//這種做法使得本算法同樣適用于負數的情況
????????????res=res<<1;
????????????res+=bitSum[i]%3;//這兩步順序不能變,否則最后一步會多左移一次
????????}
????????return?res;
????}
}
微信關注“字節408考研”,
免費獲取各院校計算機軟件考研信息與專業課資料!
總結
以上是生活随笔為你收集整理的java二维数组数字数显次数_【每日一题】118.数组中数字出现的次数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪最强SUV!全新唐DM-p价格曝光
- 下一篇: 499元乐视Y1 Pro真机曝光:网友调