亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

萬人千題計(jì)劃-32

galois / 1828人閱讀

摘要:假設(shè)模式起始位置為,判斷后續(xù)序列是否滿足條件,其實(shí)只需要判斷與是否相同。如果數(shù)組中不存在至少重復(fù)次且長(zhǎng)度為的模式,返回注意這里需要加一,否則會(huì)錯(cuò)

今日題解

推薦社區(qū):萬人千題

二進(jìn)制中1的個(gè)數(shù)

思路:不斷地讓n和n-1做與運(yùn)算(n&=(n-1)),直到n變?yōu)?
因?yàn)槊看芜\(yùn)算會(huì)使n的最低位被翻轉(zhuǎn)

class Solution {public:    int hammingWeight(uint32_t n) {        int res = 0;        while(n) {            n&=(n-1);            res++;        }        return res;    }};

各位相加

思路:主要是確保 res 一定是個(gè)位數(shù),其他的不難想出來

class Solution {public:    int addDigits(int num) {        int res = 0;        while(num)        {            res += num %10;            num /= 10;            if(res >= 10)//確保res是1位數(shù)            {                res %= 10;                res++;            }        }        return res;    }};

兩個(gè)數(shù)組之間的距離

思路:很直接的想法,兩層for循環(huán),遍歷兩個(gè)數(shù)組,判斷對(duì)應(yīng)的值相減是否小于d,若小于,則–res;

class Solution {public:    int findTheDistanceValue(vector<int>& arr1, vector<int>& arr2, int d) {        int res = arr1.size();        for(int &i : arr1) {            for(int &j : arr2) {                if(abs(i-j) <= d) {                    --res;                    break;                }            }        }        return res;    }};

順次數(shù)

思路:兩層循環(huán)完美解決,外循環(huán)決定第一個(gè)數(shù),內(nèi)循環(huán)產(chǎn)生所有順次數(shù),只有當(dāng)數(shù)字范圍在[low, high]中時(shí),存入結(jié)果。
比如:
i為1時(shí),內(nèi)層循環(huán)產(chǎn)生 1、12、123、…、123456789
i為2時(shí),內(nèi)層循環(huán)產(chǎn)生2、23、234、…、23456789
由于順次數(shù)的長(zhǎng)度最長(zhǎng)為9,所以只用遍歷1-8開頭的所有順次數(shù)

class Solution {public:    vector<int> sequentialDigits(int low, int high) {        vector<int> res;        for(int i=1; i<=9; ++i) {            int num = i;            for(int j = i+1; j<=9; ++j) {                num = num*10 + j;                if(num >= low && num <= high) {                    res.push_back(num);//每次循環(huán)都在res后面加一位數(shù)                }            }        }        sort(res.begin(), res.end());        return res;    }};

兩個(gè)數(shù)組的交集

思路:快樂哈希表,舒服你我他

class Solution {public:    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {        unordered_set<int> res;        unordered_set<int> nums1_set(nums1.begin(), nums1.end());        for(auto &n2 : nums2) {            // nums2 的元素在 nums1_set 中出現(xiàn)過            if(nums1_set.find(n2) != nums1_set.end()) {                res.insert(n2);            }        }        return vector<int> (res.begin(), res.end());    }};

統(tǒng)計(jì)特殊四元組

思路:四層循環(huán)暴力破解

class Solution {public:    int countQuadruplets(vector<int>& nums) {        int n=nums.size();        int count=0;        for(int i=0;i<n;i++)        {            for(int j=i+1;j<n;j++)            {                for(int k=j+1;k<n;k++)                {                    for(int l=k+1;l<n;l++)                    {                        if(nums[i]+nums[j]+nums[k]==nums[l])                        {                            count++;                        }                    }                }            }        }        return count;    }};

方法二:統(tǒng)計(jì)左側(cè)的兩數(shù)之和,同時(shí)統(tǒng)計(jì)右側(cè)的兩數(shù)之差,比較左側(cè)是否與右側(cè)相等

class Solution {public:    int countQuadruplets(vector<int>& nums) {        int res = 0;        unordered_map<int, int> map;        int size = nums.size();        for(int i=1; i<size-2; ++i) {            for(int j=0; j<i; ++j) {                map[nums[i] + nums[j]]++;            }            for(int j=i+2; j<size; ++j) {                if(map.count(nums[j] - nums[i+1])) {                    res += map[nums[j] - nums[i+1]];                }            }        }        return res;    }};

重復(fù)至少k次且長(zhǎng)度為m的模式

思路:
由于模式的長(zhǎng)度為m,且需要重復(fù)k次,所以模式起始位置在[0, n - m * k]之間。
假設(shè)模式起始位置為i,判斷后續(xù)序列[ i + m, i + m * k )是否滿足條件,其實(shí)只需要判斷arr[ j ]與arr[ j - m ]是否相同。

class Solution {public:    bool containsPattern(vector<int>& arr, int m, int k) {        int size = arr.size();        //如果數(shù)組中不存在至少重復(fù) k 次且長(zhǎng)度為 m 的模式,返回false        if(size < m*k) return false;                int i, j;        for(i=0; i<size-m*k + 1; ++i) {//注意這里需要加一,否則會(huì)錯(cuò)            for(j=i+m; j<i+m*k; ++j) {                if(arr[j] != arr[j-m]) break;            }            if(j == i + m*k) return true;        }        return false;    }};

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/124079.html

相關(guān)文章

  • 人千計(jì)劃-26

    摘要:為了不讓字符串越界,特別在循環(huán)里面再次添加了條件函數(shù)判斷一個(gè)字符是否是字母或者十進(jìn)制數(shù)字,若為字母和數(shù)字則返回真,否則返回否函數(shù)把字符轉(zhuǎn)換成小寫字母,非字母字符不做出處理。我一時(shí)半會(huì)是搞不定了,但如果是哈希的話,還是可以接受這種思路 ...

    luzhuqun 評(píng)論0 收藏0
  • 人千】大學(xué)生算法社區(qū)火爆開啟,每日打卡學(xué)習(xí),誠(chéng)邀妳的加入

    摘要:三結(jié)對(duì)編程排位賽四個(gè)人為一組,由隊(duì)長(zhǎng)帶隊(duì)刷題,每周根據(jù)這周四個(gè)人的刷題總數(shù)進(jìn)行隊(duì)伍間排名。萬人千題結(jié)對(duì)編程排位賽如果想?yún)⒓拥牡诙诘耐瑢W(xué),可以先聯(lián)系作者加群,看看第一期的同袍是如何奮斗的。 ...

    morgan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

galois

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<