中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

【代碼訓(xùn)練營(yíng)】day1|704.二分查找&27.移除元素-創(chuàng)新互聯(lián)

目錄
  • 數(shù)組基礎(chǔ)
    • 數(shù)組理論知識(shí)
  • 二分查找 Leetcode704
    • 題目連接:[二分查找 Leetcode704 - 簡(jiǎn)單](https://leetcode.cn/problems/binary-search/)
    • 思路
    • java代碼
    • 總結(jié)
  • 移除元素 Leetcode27
    • 題目鏈接:[移除元素 Leetcode27 - 簡(jiǎn)單](https://leetcode.cn/problems/remove-element/)
    • 思路
    • java代碼
    • 總結(jié)

在清河門等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷,成都外貿(mào)網(wǎng)站建設(shè),清河門網(wǎng)站建設(shè)費(fèi)用合理。數(shù)組基礎(chǔ) 數(shù)組理論知識(shí)

注意:

  • 數(shù)組的下標(biāo)都從0開(kāi)始
  • 數(shù)組的內(nèi)存地址是連續(xù)的

在這里插入圖片描述

由于數(shù)組地址是連續(xù)的,所以在刪除或插入元素的時(shí)候,都要移動(dòng)后面的元素

??對(duì)于二維數(shù)組的話,C++是地址是連續(xù)的,java不連續(xù)。 java的地址如下圖:

 java內(nèi)存地址

二分查找 Leetcode704 題目連接:二分查找 Leetcode704 - 簡(jiǎn)單 思路

本題主要有兩種解法:一是左閉右閉[ , ],一種是左閉右開(kāi)[ , ),在大部分的題型中都采用左閉右開(kāi)的方法。

java代碼

1、左閉右閉

public int search(int[] nums, int target) {   int left = 0;
       int right = nums.length - 1;
       // 左閉右閉的情況可以取到中間的值
       //如[01234],當(dāng)left=2 right=2 target=2,若letf  // int middle = (left + right) / 2; 可能會(huì)溢出
          int middle = left + ((right - left)>>1);
           if (nums[middle]< target){// [,target]目標(biāo)值在右邊 
               left = middle + 1; // 調(diào)整左區(qū)間[middle+1,],左為閉區(qū)間 要 +1
           }else if(nums[middle] >target){// [target,]目標(biāo)值在左邊 
               right = middle - 1;	// 調(diào)整右區(qū)間[,middle-1],右為閉區(qū)間 要 -1
           }else {   return middle; // 找到則返回下標(biāo)
           }
       }
       return -1;
    }

2、左閉右開(kāi)

public int search(int[] nums, int target) {int left = 0;
        int right = nums.length; // 這里不-1
        // 因?yàn)橛疫吶〔坏?,所以不用取?        //如[01234],當(dāng)target=2 left=2 right=3時(shí)就返回了,所以不用取等
        while (left< right){int middle = left + ((right - left) >>1);
            if (nums[middle]< target){// [,target)在目標(biāo)值右邊
                left = middle + 1;  // 左為閉區(qū)間要 + 1
            }else if(nums[middle] >target){// [target,)在目標(biāo)值左邊
                right = middle; // 右邊取不到的,直接取等
            }else {return middle;
            }
        }
        return -1;
    }
總結(jié)

1、遇到問(wèn)題:在寫左閉右開(kāi)的時(shí)提交一直不對(duì),是由于沒(méi)考慮到right = nums.length此時(shí)右區(qū)間不用減一,因?yàn)橛覅^(qū)間取不到。
2、注意: 取中間值最好用位運(yùn)算middle = left + ((right - left) >>1),雖然直接寫middle = (left + right) / 2也能通過(guò),但是就怕其他情況出現(xiàn)溢出。還有一個(gè)注意點(diǎn)就是middle的位置left ?= right

移除元素 Leetcode27 題目鏈接:移除元素 Leetcode27 - 簡(jiǎn)單 思路

此題不能有額外的數(shù)組空間,也就是進(jìn)行原地修改,修改后直接返回?cái)?shù)組長(zhǎng)度就實(shí)行了。所以把需要修改元素位置找到,后面的再依次填充就好了
- - 雙指針解法
快指針:指向數(shù)組下標(biāo),若不是目標(biāo)值就更新,是目標(biāo)值就跳過(guò)。
慢指針:指向更新數(shù)組的下標(biāo)

java代碼

1、暴力解法

public int removeElement(int[] nums, int val) {   int count = nums.length;
       // i   if (nums[i] == val){   for (int j = i+1; j< count; j++) {   nums[j-1] = nums[j];
               }
//                System.out.println("看一下nums" +  Arrays.toString(nums));
               i--;
               count--;
           }
       }
       return count;
   }

2、雙指針(推薦)

public int removeElement(int[] nums, int val) {// 慢指針,用于存儲(chǔ)新的數(shù)組元素,每次儲(chǔ)存一位就后移一位
        int slow = 0;
        // 快指針,用于復(fù)制原數(shù)組里面不包含val的數(shù)
        for (int fast = 0; fast< nums.length; fast++) {if (nums[fast] != val){nums[slow++] = nums[fast];
            }
        }
        return slow;
    }
總結(jié)

1、遇到的問(wèn)題: 在寫暴力的時(shí)候一直輸出錯(cuò)誤,錯(cuò)在我一開(kāi)始寫的循環(huán)結(jié)束條件為i< nums.length,但是這樣就沒(méi)有考慮到每次后移最后就是目標(biāo)值,這樣就會(huì)進(jìn)入死循環(huán)。
2、熟練使用雙指針可解決大部分?jǐn)?shù)組的題,若不太會(huì)就畫出圖或是打輸出語(yǔ)句。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁(yè)名稱:【代碼訓(xùn)練營(yíng)】day1|704.二分查找&27.移除元素-創(chuàng)新互聯(lián)
本文鏈接:http://www.rwnh.cn/article28/jdhjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、定制開(kāi)發(fā)、標(biāo)簽優(yōu)化、App設(shè)計(jì)、響應(yīng)式網(wǎng)站企業(yè)建站

廣告

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

搜索引擎優(yōu)化
白银市| 武陟县| 宁陕县| 峨眉山市| 荃湾区| 泰安市| 拉孜县| 白银市| 石台县| 社会| 德令哈市| 南昌县| 西和县| 元阳县| 长汀县| 呼和浩特市| 闽侯县| 云浮市| 濉溪县| 酒泉市| 呼玛县| 孝感市| 宁城县| 仙居县| 安阳市| 枣庄市| 水城县| 察隅县| 凌云县| 年辖:市辖区| 田阳县| 双峰县| 武安市| 柘城县| 临朐县| 泰顺县| 郁南县| 兴业县| 阿克苏市| 永定县| 昌宁县|