日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java二维数组数字数显次数_【每日一题】118.数组中数字出现的次数

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java二维数组数字数显次数_【每日一题】118.数组中数字出现的次数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關注我們獲取更多計算機考研信息

? 今日習題

在一個數組 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.数组中数字出现的次数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。