代碼隨想錄算法訓練營第一天

● 今日學習的文章鏈接和視頻鏈接

● 自己看到題目的第一想法

1. 704二分法:

方法一:
整個數組是 左閉右閉區間 [ ]

  1. left指針指向數組開始下標, right 指針指向數組最后下表nums.size()-1, mid為 (left+right) /2
  2. 循環條件 left<=right
  3. nums[mid] <target 右移left left = mid+1
    nums[mid] > target 左移right right = mid-1
    nums[mid] = target 返回 mid
    找不到 返回 -1

方法二:
整個數組是 左閉右開區間 [ )

  1. left指針指向數組開始下標, right 指針指向數組最后下表nums.size(), mid為 (left+right) /2
  2. 循環條件 left< right
  3. nums[mid] <target 右移left left = mid+1
    nums[mid] > target 左移right right = mid
    nums[mid] = target 返回 mid
    找不到 返回 -1
2.注意:區間邊界問題

整個數組是 左閉右閉區間 [ ]
整個數組是 左閉右開區間 [ )

3.具體代碼

方法一:

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

在這里插入圖片描述
方法二:

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

在這里插入圖片描述

2. 27移除元素

思路

方法一:雙指針

  1. 定義下標 快指針fast , 慢指針slow
  2. 循環條件 fast <= nums.size()-1
  3. nums[fast] == val 則fast++;
    nums[fast] != val 則 nums[slow] = nums[fast], slow++, fast++;
    slow最終指向沒有val值 數組最后一個元素的下標。

方法二:
4. 定義left =0 right =nums.size()-1
5. 循環條件 left<=right
6. 左邊找到nums[left]==val 的下標
右邊找到nums[right] !=val 的下標
交換 nums[left] =nums[right] left++; right–;
結果: return left;

class Solution {
public:int removeElement(vector<int>& nums, int val) {int left =0;int right = nums.size()-1;while(left<=right){while(left<=right && nums[left] != val){left++;}while(left<=right && nums[right] == val){right--;}if(left<=right){nums[left] = nums[right];left++;right--;}}return left;}
};

在這里插入圖片描述

注意

slow指:更新后 新數組下標
fast 指:尋找新數組的元素

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

在這里插入圖片描述

● 看完代碼隨想錄之后的想法

● 自己實現過程中遇到哪些困難

● 今日收獲,記錄一下自己的學習時長

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696130.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696130.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696130.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

打開stable diffusion webui時,提示缺少clip或clip安裝不上的解決方案(windows下的操作)

1.問題描述 打開stable diffusion webui時&#xff0c;提示缺少clip或clip安裝不上 2.解決方案 原因&#xff1a;stable diffusion webui環境中的clip其實是open_clip&#xff0c;不能用pip install clip安裝解決方法是直接到github下載 open_clip 代碼到本地&#xff0c;并…

linux環境ssh-rsa進行簽名\權限\登錄\原理(免密登錄)

linux環境ssh-rsa進行簽名權限登錄(免密登錄) SSH原理與運用什么是SSH?SSH的使用場景ssh-rsa獲取xshell環境登錄獲取ssh-rsa使用ssh-rsa登錄SHA系列SHA-1、SHA-256和RSA的區別RSA原理數論基礎RSA機制RSA數學密鑰生成公式RSA數學加密理論RSA數學簽名公式

小折疊也能成為主力機,全新小折疊旗艦華為Pocket 2正式發布

2024年2月22日&#xff0c;華為在三亞舉辦華為Pocket 2時尚盛典&#xff0c;正式發布其全新小折疊旗艦華為Pocket 2。一直以來&#xff0c;華為致力于萃取各界藝術靈感&#xff0c;不斷探尋科技美學的可能性&#xff0c;華為Pocket系列更是秉承將奢雅美學與尖端科技融為一體的理…

探索Redis是否為單線程的奧秘(文末送書)

&#x1f308;個人主頁&#xff1a;聆風吟 &#x1f525;系列專欄&#xff1a;數據結構、網絡奇遇記 &#x1f516;少年有夢不應止于心動&#xff0c;更要付諸行動。 文章目錄 &#x1f4cb;前言一. Redis中的多線程二. I/O多線程三. Redis中的多進程四. 結論五. 書籍推薦5.1 書…

高效時間管理法則

你是否天天在忙&#xff0c;是否忙的不得要領&#xff0c;認真領會時間管理的四象限工作法&#xff0c;它會讓你的工作變得高效。 目錄 一、時間管理的誤區 二、時間是如何被浪費的&#xff1f; 內部因素 外部因素 三、時間管理的5個階段 1.公雞型時間管理&#xff1a; …

第一個Qt程序中的秘密

創建第一個程序 首先我們打開Qt Creator 打開文件->New Projects... 菜單&#xff0c;創建我們的第一個Qt項目 選擇 Qt Widgets Application&#xff0c;點擊選擇...按鈕 之后&#xff0c;輸入項目名稱QtLearning&#xff0c;并選擇創建路徑&#xff0c; 在build system中選…

ConnectWise ScreenConnect 身份驗證繞過漏洞復現可RCE(CVE-2024-1709)

0x01 產品簡介 ConnectWise ScreenConnect ,是一款自托管的遠程桌面軟件應用,該款軟件允許用戶自行托管,可以在自己的服務器、個人電腦、虛擬機或虛擬專用服務器上運行。 0x02 漏洞概述 ConnectWise ScreenConnect低于23.9.8 版本的產品中,SetupWizard.aspx接口處存在身…

Android14 InputManager-焦點窗口的更新

設置焦點時需要 先設置焦點APP mFo-cusedApp是一個AppWindowToken&#xff0c;在WMS中用來表示當前處于Resume狀態的Activity。它是由AMS在開始啟動一個Activity時調用WMS的setFocusedApp&#xff08;&#xff09;函數設置的。 考慮以下應用場景&#xff0c;當用戶從Launche…

內存管理——線性內存,進程空間

低2G為進程空間 開始地址結束地址大小屬性00xFFFFF1M保留0x1000000x102FFF棧不固定位置、大小0x1030000x143FFF堆不固定位置、大小0x400000主程序文件不固定位置、大小加載dll不固定位置、大小0x7ffdd000TIB位置&#xff0c;大小編譯時固定0x7FFFE000系統與用戶共享數據塊位置…

[newstarctf2023] --RE wp

AndroGenshin: rc4加密表&#xff0c;base64換表&#xff1a; 腳本梭就行 python username b"genshinimpact" base64_table [125, 239, 101, 151, 77, 163, 163, 110, 58, 230, 186, 206, 84, 84, 189, 193, 30, 63, 104, 178, 130, 211,164, 94, 75, 16, 32, 33…

發布 rust 源碼包 (crates.io)

rust 編程語言的包 (或者 庫, library) 叫做 crate, 也就是軟件中的一個組件. 一個完整的軟件通常由多個 crate 組成, rust 編譯器 (rustc) 一次編譯一整個 crate, 不同的 crate 可以同時并行編譯. rust 官方有一個集中發布開源包的網站 crates.io. 發布在這上面的 crate 可以…

uniapp微信公眾號H5分享

如果項目文件node_modules中沒有weixin-js-sdk文件&#xff0c;則直接使用本文章提供的&#xff1b; 如果不生效&#xff0c;則在template.h5.html中引入 <script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> 首先引入weixin-js-…

vue3框架組件自動導入unplugin-vue-components

1.安裝 npm i unplugin-vue-components -save-dev 2.配置 我這里用的是Vue CLI&#xff0c;所以要在vue.config.js文件中添加配置&#xff0c;官網中有寫不同打包工具的配置寫法 框架我使用的是Element Plus&#xff0c;使用前去官網查看自己的框架是否支持&#xff0c;主流…

LLM之RAG實戰(二十七)| 如何評估RAG系統

有沒有想過今天的一些應用程序是如何看起來幾乎神奇地智能的&#xff1f;這種魔力很大一部分來自于一種叫做RAG和LLM的東西。把RAG&#xff08;Retrieval Augmented Generation&#xff09;想象成人工智能世界里聰明的書呆子&#xff0c;它會挖掘大量信息&#xff0c;準確地找到…

電腦黑屏什么都不顯示怎么辦 電腦開機黑屏不顯示任何東西的4種解決辦法

相信有很多網友都有經歷電腦開機黑屏不顯示任何東西&#xff0c;找了很多方法都沒處理好&#xff0c;其實關于這個的問題&#xff0c;首先還是要了解清楚開機黑屏的原因&#xff0c;才能夠對癥下藥&#xff0c;下面大家可以跟小編一起來看看怎么解決吧 電腦開機黑屏不顯示任何…

【無刷電機學習】基礎概念及原理介紹(持續更新中...)

目錄&#xff08;2024.02.22版&#xff09; 1 定義 2 各種電機優勢比較 2.1 有刷與無刷比較 2.2 交流與直流比較 2.3 內轉子與外轉子比較 2.4 低壓BLDC的一些優點 3 基本原理 3.1 單相無刷電機 3.2 三相無刷電機 4 驅動方法 4.1 六步換相控制 4.1.1 基本原理 4…

突發!AI獨角獸「竹間智能」被曝停工停產6個月

大家好我是二狗。 今天早上起來刷朋友圈&#xff0c;看到一張截圖——AI創企竹間智能&#xff0c;宣稱因為公司所處的經營環境艱難&#xff0c;部分部門和崗位將從即日起停工停產6個月。 圖源&#xff1a;&#xff08;企服科學&#xff09; 下面是文字版&#xff1a; 由于公司…

Web服務器基礎介紹

目錄 Web服務器基礎介紹 一、HTML是什么&#xff1f; 二、靜態網頁和動態網頁 1、靜態網頁 2、動態網頁 3、動態網頁語言 PHP JSP Python Ruby 三、HTTP協議 1、HTTP協議是什么&#xff1f; 2、HTTP請求訪問的方法 3、GET與POST比較 GET&#xff1a; POST&…

Linux網絡編程(三-UDP協議)

目錄 一、UDP概述 二、UDP的首部格式 三、UDP緩沖區 四、基于UDP的應用層協議 五、常見問題 一、UDP概述 UDP(User Datagram Protocol&#xff0c;用戶數據協議報)是傳輸層協議&#xff0c;提供不可靠服務&#xff0c;其特點包括&#xff1a; 無連接&#xff1a;知道對端…

CSP-202309-3-梯度求解

CSP-202309-3-梯度求解 作為一個算法小白&#xff0c;本人第一次接觸大模擬的題&#xff0c;本題的算法參考自&#xff1a;【CSP】202309-3 梯度求解 解題思路 1.輸入處理 getchar();&#xff1a;從標準輸入讀取一個字符。這里它的作用可能是用來“吃掉”&#xff08;消耗&a…