国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

代碼隨想錄Day1 | 數(shù)組01- leetcode 704、27

這篇具有很好參考價值的文章主要介紹了代碼隨想錄Day1 | 數(shù)組01- leetcode 704、27。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

704-二分法

題目鏈接:二分查找

關鍵問題:

????????- 邊界(left、right)、當前查找值(middle)

? ? ? ? ? ? ? ? - target大于當前查找值 --> 當前查找區(qū)域的右邊,更改區(qū)間left

? ? ? ? ? ? ? ? - target小于當前查找值 --> 當前查找區(qū)域的左邊,更改區(qū)間right

? ? ? ? ? ? ? ? - middle的計算 :(right - left)/2? + left?

? ? ? ? - 查找區(qū)間

? ? ? ? ? ? ? ? - 開區(qū)間or閉區(qū)間 --> 涉及while的判斷條件即target不存在的情況

時空復雜度:

? ? ? ? - 時間復雜度:數(shù)組長度為n,查找區(qū)間的長度:n、n/2、n/4、n/8、...、n/2^k? --> O(log n)

? ? ? ? - 空間復雜度:O(1)

代碼
class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() - 1;
        
        while(left <= right){
            int middle = left + ((right - left)/2);
            if(nums[middle] == target){
                return middle;
            } else if(nums[middle] > target){
                right = middle - 1;
            } else{
                left = middle + 1;
            }
        }

        return -1;
    }
};

? ? ? ? 一些可以提升性能的細節(jié):在三個if判斷中,將查找到結果放在最前(代碼第9-10行) --> 若當前命中則可以減少兩次判斷


27-?移除元素

題目鏈接:移除元素

1. 暴力解法

? ? ? ? 算法描述:當查找到每一個待刪除元素,都將所有后續(xù)元素向前移動一次

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        // 暴力解法 --> 所有元素前移
        int n = nums.size();
        for(int i = 0; i < n; i++){
            if(nums[i] == val){
                for(int j = i; j < n-1; j++){
                    nums[j] = nums[j+1];
                }
                i--;
                n--;
            }
        }
        return n;
    }
};

? ? ? ? 代碼細節(jié) (i--):?由于發(fā)生了前移,當前位置i發(fā)生了元素的替換,而i在循環(huán)中自增,因此需要i--,回到位置i處。

? ? ? ? 時間復雜度:

2.快慢指針

? ? ? ? 算法描述:雙指針法,快慢指針同時從頭遍歷,遇到待移除元素時慢指針停止,快指針繼續(xù)移動直到遇到第一個不需要移除的元素,此時將快指針指向的元素拷貝到慢指針指向的數(shù)組位置,拷貝完成后,快慢指針繼續(xù)同步移動,直至快指針遍歷完數(shù)組。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        //快慢指針
        int slow = 0;
        for(int fast = 0; fast < nums.size(); fast++){
            if(nums[fast] != val){
                nums[slow++] = nums[fast];
            }
        }
        return slow;
    }
};

????????時間復雜度:O(n)

3.相向雙指針

? ? ? ? 算法描述:雙指針法,設置首尾指針,首指針開始遍歷,當遇到待移除元素時停止,此時尾指針從后向前移動至不需要刪除的元素位置處,將尾指針指向的元素拷貝到首指針指向的位置,尾指針前移一步。首指針繼續(xù)遍歷,遇到待移除元素重復上述操作,直至首位指針相遇。

? ? ? ? 優(yōu)點:與快慢指針對比來考慮,若遇到待刪除元素在靠前位置時,快慢指針需要移動所有后續(xù)元素,而雙向雙指針只需要一次替換操作。舉例來說:對于數(shù)組A[n] = [0,1,1,...,1,1,2],當需要刪除元素0時,快慢指針需要移動0后續(xù)的所有元素,得到的結果為A[n-1] = [1,1,...,1,1,2],而相向雙指針僅需一次替換將2替換到最前,得到的結果為A[n-1] = [2,1,1,...,1,1]。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        // 相向雙指針
        int left = 0;
        int right = nums.size() -1;
        
        while(left <= right){// 閉區(qū)間
            if(nums[left] == val){
                if(nums[right] != val){
                    nums[left] = nums[right];
                    left++;
                }
                right--;
            }else{
                left++;
            }
        }
        return left;
    }
};

????????時間復雜度:O(n)文章來源地址http://www.zghlxwxcb.cn/news/detail-589111.html

到了這里,關于代碼隨想錄Day1 | 數(shù)組01- leetcode 704、27的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 代碼隨想錄day01

    ● 思維不難,主要是考察對代碼的掌控能力 ● 內(nèi)存中的存儲方式:存放在連續(xù)內(nèi)存空間上的相同類型數(shù)據(jù)的集合 ● 數(shù)組可以通過下標索引獲取到下標對應的數(shù)據(jù) ● 數(shù)組下標從0開始 ● 因為內(nèi)存空間地址連續(xù),因此刪除或增加元素的時候,難免移動其他元素地址 ● Java中的

    2024年02月13日
    瀏覽(94)
  • 代碼隨想錄二刷day01

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 使用左閉右閉區(qū)間的二分查找時, 最后low一定是被查找元素的插入位置,若查找的數(shù)帶小數(shù),low-1, 便是最終結果 1、左閉右閉 2、左閉右開

    2024年02月12日
    瀏覽(92)
  • 代碼隨想錄 day38 第九章 動態(tài)規(guī)劃part01

    ●??理論基礎 ●??509.?斐波那契數(shù) ●??70.?爬樓梯 ●??746.?使用最小花費爬樓梯 理論基礎 解決動態(tài)規(guī)劃必須要想清楚的點 dp數(shù)組以及下標的含義 遞推公式 dp數(shù)組如何初始化 遍歷順序 打印數(shù)組 檢查結果 關聯(lián) leetcode 509.?斐波那契數(shù) 思路 動規(guī)五部曲 dp數(shù)組以及下標的含義

    2024年04月17日
    瀏覽(30)
  • 代碼隨想錄 LeetCode數(shù)組篇 二分查找

    代碼隨想錄 LeetCode數(shù)組篇 二分查找

    # (簡單)704. 二分查找 題目鏈接 代碼隨想錄 - 二分查找思路 二分查找,思路很簡單,但是在while循環(huán)left和right的比較是寫=還是,還有right=mid還是right=mid-1容易混淆 需要想清楚對區(qū)間的定義,是[left,right],還是[left,right) (版本一,左閉右閉版本) (版本二,左閉右開) 題目

    2024年02月02日
    瀏覽(94)
  • 【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59

    【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59

    歡迎來到小K的Leetcode|代碼隨想錄|專題化專欄,今天將為大家?guī)砺菪仃嚨姆窒?? 給你一個正整數(shù) n ,生成一個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1: 示例 2: 提示: 思路: 本類型題目其實都不涉及什么算法,就是模擬

    2024年02月16日
    瀏覽(23)
  • 【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59-54

    【代碼隨想錄 | Leetcode | 第四天】數(shù)組 | 螺旋矩陣 | 59-54

    歡迎來到小K的Leetcode|代碼隨想錄|專題化專欄,今天將為大家?guī)砺菪仃嚨姆窒?? 給你一個正整數(shù) n ,生成一個包含 1 到 n 2 所有元素,且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1: 示例 2: 提示: 思路: 本類型題目其實都不涉及什么算法,就是模擬

    2024年02月16日
    瀏覽(25)
  • 代碼隨想錄Day20 回溯算法 LeetCode77 組合問題

    代碼隨想錄Day20 回溯算法 LeetCode77 組合問題

    以下內(nèi)容更詳細解釋來自于:代碼隨想錄 (programmercarl.com) 回溯法也叫回溯搜索法,是搜索法的一種,我們之前在二叉樹中也經(jīng)常使用到回溯來解決問題,其實 有遞歸就有回溯 ,有的時候回溯隱藏在遞歸之下,我們不容易發(fā)覺,今天我們來詳細介紹一下什么是回溯,它能解決哪些問題.

    2024年02月08日
    瀏覽(93)
  • 【代碼隨想錄-Leetcode第六題:209. 長度最小的子數(shù)組】

    【代碼隨想錄-Leetcode第六題:209. 長度最小的子數(shù)組】

    給定一個含有 n 個正整數(shù)的數(shù)組和一個正整數(shù) target 。 找出該數(shù)組中滿足其和 ≥ target 的長度最小的 連續(xù)子數(shù)組 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數(shù)組,返回 0 。 參考【代碼隨想錄】 示例 1: 示例 3: 提示: 1 = target = 109 1 = nums.length

    2024年02月12日
    瀏覽(26)
  • 代碼隨想錄day2|有序數(shù)組的平方、長度最小的子數(shù)組、螺旋矩陣

    代碼隨想錄day2|有序數(shù)組的平方、長度最小的子數(shù)組、螺旋矩陣

    前言:今天去校醫(yī)院拔了兩顆牙,太痛了,今天寫的博客就比較水。 所謂滑動窗口,就是不斷的調(diào)節(jié) 子序列的起始位置和終止位置 ,從而得出我們要想的結果。

    2024年02月01日
    瀏覽(22)
  • 代碼隨想錄day21(2)二叉樹:二叉樹的所有路徑(leetcode257)

    代碼隨想錄day21(2)二叉樹:二叉樹的所有路徑(leetcode257)

    題目要求:按任意順序返回所有從根節(jié)點到葉節(jié)點的路徑 思路:我們先遞歸地進行前序遍歷,同時要注意回溯的過程,注意一些庫的用法即可。 leetcode實戰(zhàn): 代碼實現(xiàn):

    2024年03月18日
    瀏覽(52)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包