最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++LeetCode數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)詳解

 更新時(shí)間:2021年08月16日 11:21:06   作者:caiyec  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode數(shù)據(jù)結(jié)構(gòu),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

一、只出現(xiàn)一次的數(shù)字

遍歷一遍數(shù)組利用異或的特性來實(shí)現(xiàn)(相同為0,相異為1 )

例如[4,1,2,1,2] 4和1異或?yàn)? 5和2異或?yàn)? 7和1異或?yàn)? 6和2異或?yàn)? 這樣就能找出唯一的數(shù)字了

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

二、多數(shù)元素

這題可以利用排序就返回中間位置元素,就是數(shù)量超過一半的數(shù)字,但是時(shí)間復(fù)雜度為O(nlogn),

利用摩爾投票法,實(shí)現(xiàn)遍歷一遍數(shù)組就能找到多數(shù)元素,

具體實(shí)現(xiàn):定義兩個(gè)變量計(jì)數(shù)位和標(biāo)記位,將計(jì)數(shù)位初始化為1 ,將標(biāo)記位為數(shù)組第一個(gè)元素 如圖[2,2,1,1,1,2,2]

在這里插入圖片描述

public int majorityElement(int[] nums) {
    //摩爾投票法  也叫同歸于盡法 
    int count=1;
    int res=nums[0];
    for(int i=1;i<nums.length;i++){
        if(res==nums[i]){
            count++;
        }else{
            count--;
            if(count==0){
                res=nums[i];
                count=1;
            }
        }
    }
    return res;
 }

三、三數(shù)之和

三數(shù)之和有點(diǎn)類似與兩數(shù)之和,但是難度確增加了不少

思路是先對(duì)數(shù)組進(jìn)行排序,之后定義雙指針**,左指針為i+1,右指針為最后一個(gè)數(shù)組元素,進(jìn)行求和找和第一個(gè)數(shù)字相等的數(shù)**

在這里插入圖片描述

public List<List<Integer>> threeSum(int[] nums) {
        //排序加雙指針
        Arrays.sort(nums);
        List <List<Integer>>  list=new ArrayList<>();
        if(nums==null||nums.length<3){
            return list;
        }
        for(int i=0;i<nums.length-2;i++){
            if(nums[i]>0){
                break;
            }
            if(i>0&&nums[i]==nums[i-1]){//去掉重復(fù)元素
                continue;
            }
            int left=i+1; int right=nums.length-1;
            while(left<right){
                int temp=-nums[i];
                if(nums[left]+nums[right]==temp){
                    list.add(new ArrayList<>(Arrays.asList(nums[i], nums[left], nums[right])));
                    left++;
                    right--;
                    while(left<right&&nums[left]==nums[left-1]) left++;
                    while(left<right&&nums[right]==nums[right+1]) right--;
                }else if(nums[left]+nums[right]>temp){
                    right--;
                }else{
                    left++;
                }
            }
        }
        return list;
     }

注意:

1 .給數(shù)組排序之后判斷元素是否大于0,大于直接返回,后面元素一定大于0

2. 去掉重復(fù)的元素,如果值相同繼續(xù)指針移動(dòng)

3. Arrays.asList() 是將數(shù)組轉(zhuǎn)換成List集合的方法

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C語言實(shí)現(xiàn)三子棋游戲的示例代碼

    C語言實(shí)現(xiàn)三子棋游戲的示例代碼

    今天我們將會(huì)用C語言實(shí)現(xiàn)三子棋。所謂三子棋,就是三行三列的棋盤,玩家可以和電腦下棋,率先連成三個(gè)的獲勝。話不多說,我們開始吧
    2022-10-10
  • C++中int類型按字節(jié)打印輸出的方法

    C++中int類型按字節(jié)打印輸出的方法

    這篇文章主要給大家介紹了關(guān)于C++中int類型按字節(jié)打印輸出的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • C++的數(shù)據(jù)共享與保護(hù)你了解嗎

    C++的數(shù)據(jù)共享與保護(hù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • c++ For循環(huán)執(zhí)行順序流程圖解

    c++ For循環(huán)執(zhí)行順序流程圖解

    for 循環(huán)允許您編寫一個(gè)執(zhí)行特定次數(shù)的循環(huán)的重復(fù)控制結(jié)構(gòu),這里為大家分享一下具體的執(zhí)行流程,需要的朋友可以參考下
    2021-10-10
  • C++設(shè)計(jì)模式之迭代器模式

    C++設(shè)計(jì)模式之迭代器模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之迭代器模式,本文講解了什么是迭代器模式、迭代器模式的代碼實(shí)例等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • C++ STL中常見的算法使用方式

    C++ STL中常見的算法使用方式

    這篇文章主要介紹了C++ STL中常見的算法使用方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進(jìn)算法

    C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進(jìn)算法

    冒泡排序是一種簡單排序。這種排序是采用“冒泡策略”將最大元素移到最右邊。在冒泡過程中,相鄰兩個(gè)元素比較,如果左邊大于右邊的,則進(jìn)行交換兩個(gè)元素。這樣一次冒泡后,可確保最大的在最右邊。然后執(zhí)行n次冒泡后排序即可完畢
    2013-04-04
  • C++語言編寫寫日志類

    C++語言編寫寫日志類

    這篇文章主要介紹了C++語言編寫寫日志類的相關(guān)資料,支持寫日志級(jí)別設(shè)置、支持多線程、支持可變形參表寫日志,需要的朋友可以參考下
    2015-12-12
  • C語言實(shí)現(xiàn)打飛機(jī)小游戲

    C語言實(shí)現(xiàn)打飛機(jī)小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的打飛機(jī)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 詳解散列表算法與其相關(guān)的C語言實(shí)現(xiàn)

    詳解散列表算法與其相關(guān)的C語言實(shí)現(xiàn)

    這篇文章主要介紹了詳解散列表算法與其相關(guān)的C語言實(shí)現(xiàn),平時(shí)經(jīng)常出現(xiàn)于各大考試競賽與程序員面試題目當(dāng)中,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

东莞市| 云南省| 安吉县| 盐城市| 来凤县| 乌兰县| 时尚| 陆河县| 勐海县| 中西区| 临安市| 宁德市| 老河口市| 栾城县| 延安市| 平江县| 舒兰市| 托里县| 桐梓县| 湖北省| 鄂托克旗| 林周县| 武威市| 台前县| 天祝| 三台县| 长泰县| 夏河县| 柳江县| 密云县| 宁远县| 东乌| 独山县| 新营市| 福安市| 南乐县| 道孚县| 陕西省| 五原县| 克东县| 孝昌县|