亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Leetcode-Single Number

發布時間:2020-06-22 20:13:04 來源:網絡 閱讀:436 作者:衛莨 欄目:編程語言

Single NumberI

Leetcode-Single Number

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

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

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

為奇數M為偶數,就跟上面第一題是一樣的處理方式了;而其他情況則需要考慮使用位運算。我們知道,每個數字的二進制表示是一定的,所以我們通過計算每一位中1的個數,然后除3,若余數為0說明該位上為1的數都出現了三次,若余數不為0,說明我們要找的那個數字該位為1,通過移位運算實現上述過程。同理,若題目要求其他元素均出現了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;//將循環中右移的位移回原位置
            }
        }
        return ans;
        
    }

Single NumberIII

Leetcode-Single Number

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

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;
    }
}










向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肃宁县| 潍坊市| 广州市| 湛江市| 邵阳市| 吉安市| 会宁县| 临西县| 赤水市| 济阳县| 华池县| 卢氏县| 涿州市| 马尔康县| 滦平县| 道孚县| 翁牛特旗| 东安县| 托克逊县| 本溪| 高安市| 东城区| 麦盖提县| 井冈山市| 吉安市| 滁州市| 库尔勒市| 云南省| 岳普湖县| 泰来县| 临桂县| 盐城市| 于田县| 庆安县| 商城县| 浦东新区| 北安市| 阆中市| 常山县| 沂南县| 昔阳县|