Leetcode-SingleNumber-創(chuàng)新互聯(lián)

Single NumberI

網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了黃龍免費建站歡迎大家使用!

Leetcode-Single Number

分析:這道題應該是很簡單了,直接使用異或運算,把重復出現(xiàn)的數(shù)字消掉剩下的就是出現(xiàn)一次的元素

lass Solution {
    public int singleNumber(int[] nums) {
        int tmp = nums[0];
        for(int i = 1;i < nums.length;i++){
            tmp = tmp ^  nums[i];
        }
        return tmp;
    }
}

Single NumberII

Leetcode-Single Number

分析:這種題型可以歸納為一個數(shù)組中的元素某一元素只出現(xiàn)了K次,而其他元素均出現(xiàn)了M次,然后求出出現(xiàn)K次的元素問題。如果K

為奇數(shù)M為偶數(shù),就跟上面第一題是一樣的處理方式了;而其他情況則需要考慮使用位運算。我們知道,每個數(shù)字的二進制表示是一定的,所以我們通過計算每一位中1的個數(shù),然后除3,若余數(shù)為0說明該位上為1的數(shù)都出現(xiàn)了三次,若余數(shù)不為0,說明我們要找的那個數(shù)字該位為1,通過移位運算實現(xiàn)上述過程。同理,若題目要求其他元素均出現(xiàn)了5次,就除5。

class Solution {
    public int singleNumber(int[] nums) {
        int ans = 0;
        for(int i = 0 ; i < 32 ; i++){
            int sum = 0;
            for(int j = 0 ; j < nums.length ; j++){
                if(((nums[j] >> i) & 1) == 1 ){
                    sum++;
                    sum %= 3;
                }
            }
            if(sum != 0){
                ans |= sum << i;//將循環(huán)中右移的位移回原位置
            }
        }
        return ans;
        
    }

Single NumberIII

Leetcode-Single Number

分析:數(shù)組中的無關(guān)元素出現(xiàn)了偶數(shù)次,所以先考慮用異或?qū)⑺鼈兿?,得?和5的異或結(jié)果。然后我們考慮如何將3和5分離:3(011)和5(101)異或的結(jié)果為6(110),我們需要先找到3和5的二進制表示中不相同的一位,這里的方法就是6與-6進行相與,即110與其補碼(取反加一)011相與,得到010(即從右往左3和5的第二位不同),我們姑且將它稱為分離因子。然后遍歷整個數(shù)組,每個數(shù)與該分離因子相與可將數(shù)組分為&x==0和&x!=0的兩組,然后在每組內(nèi)部進行異或運算,得到結(jié)果。

class Solution {
    public int[] singleNumber(int[] nums) {
        int diff = 0;
        for(int num : nums) {
            diff ^= num;
        }
        diff &= -diff;
        int[] res = new int[]{0,0};
        for(int i : nums) {
            if((diff & i) == 0) {
                res[0] ^= i;
            }
            if((diff & i) != 0) {
                res[1] ^= i;
            }
        }
        return res;
    }
}

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。

當前標題:Leetcode-SingleNumber-創(chuàng)新互聯(lián)
文章分享:http://www.muchs.cn/article42/depehc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設App開發(fā)、建站公司網(wǎng)頁設計公司、Google搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化