最新国产好看的视频,伊人天堂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),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

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

遍歷一遍數(shù)組利用異或的特性來(lái)實(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ù)量超過(guò)一半的數(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é)

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    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)算法

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

    C++語(yǔ)言編寫寫日志類

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

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

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

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

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

最新評(píng)論

怀化市| 凉城县| 金塔县| 宿州市| 和平区| 浏阳市| 卢氏县| 榆中县| 额济纳旗| 金山区| 宿松县| 永顺县| 遂溪县| 东莞市| 鹿邑县| 榆社县| 澳门| 甘南县| 玉环县| 临泽县| 措美县| 潮州市| 正蓝旗| 荔波县| 象山县| 浪卡子县| 安西县| 胶州市| 长兴县| 定结县| 竹山县| 定州市| 安阳市| 新闻| 苍山县| 承德县| 闽侯县| 芦山县| 金秀| 吴江市| 托克逊县|