中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

鄭州網(wǎng)站建設(shè)zzjisu網(wǎng)絡(luò)軟文營(yíng)銷案例3篇

鄭州網(wǎng)站建設(shè)zzjisu,網(wǎng)絡(luò)軟文營(yíng)銷案例3篇,wordpress 同步 朋友圈,wordpress關(guān)閉新聞活動(dòng)模塊💐個(gè)人主頁(yè):初晴~ 📚相關(guān)專欄:尋找one piece的刷題之路 什么是雙指針?biāo)惴? 雙指針?biāo)惴ㄊ且环N常用的編程技巧,尤其在處理數(shù)組和字符串問(wèn)題時(shí)非常有效。這種方法的核心思想是使用兩個(gè)指針來(lái)遍歷數(shù)據(jù)結(jié)構(gòu),這兩…

💐個(gè)人主頁(yè):初晴~

📚相關(guān)專欄:尋找one piece的刷題之路


什么是雙指針?biāo)惴?

雙指針?biāo)惴ㄊ且环N常用的編程技巧,尤其在處理數(shù)組字符串問(wèn)題時(shí)非常有效。這種方法的核心思想是使用兩個(gè)指針來(lái)遍歷數(shù)據(jù)結(jié)構(gòu),這兩個(gè)指針通常分別位于數(shù)據(jù)結(jié)構(gòu)的起始位置或某些特定位置,通過(guò)移動(dòng)這兩個(gè)指針來(lái)達(dá)到解決問(wèn)題的目的。雙指針?biāo)惴梢燥@著減少時(shí)間復(fù)雜度,使其從O(n2)O(n2)降低到O(n)O(n),甚至在某些情況下可以達(dá)到O(log?n)O(logn)。

常?的雙指針有兩種形式,?種是對(duì)撞指針,?種是左右指針。
對(duì)撞指針:?般?于順序結(jié)構(gòu)中,也稱左右指針。
  • 對(duì)撞指針從兩端向中間移動(dòng)。?個(gè)指針從最左端開(kāi)始,另?個(gè)從最右端開(kāi)始,然后逐漸往中間逼近。
  • 對(duì)撞指針的終?條件?般是兩個(gè)指針相遇或者錯(cuò)開(kāi)(也可能在循環(huán)內(nèi)部找到結(jié)果直接跳出循 環(huán)),也就是:
  • left == right (兩個(gè)指針指向同?個(gè)位置)
  • left > right (兩個(gè)指針錯(cuò)開(kāi))
快慢指針:?稱為?兔賽跑算法,其基本思想就是使?兩個(gè)移動(dòng)速度不同的指針在數(shù)組或鏈表等序列結(jié)構(gòu)上移動(dòng)。
這種?法對(duì)于處理環(huán)形鏈表數(shù)組?常有?。
其實(shí)不單單是環(huán)形鏈表或者是數(shù)組,如果我們要研究的問(wèn)題出現(xiàn)循環(huán)往復(fù)的情況時(shí),均可考慮使?快慢指針的思想。
快慢指針的實(shí)現(xiàn)?式有很多種,最常?的?種就是:
? 在?次循環(huán)中,每次讓慢的指針向后移動(dòng)?位,?快的指針往后移動(dòng)兩位,實(shí)現(xiàn)?快?慢

一、復(fù)寫零

題目鏈接

題目描述:

題目分析:

題目的意思就是遍歷原數(shù)組,每遇到一次0,就將后面所有的數(shù)水平向右移動(dòng)一位,并再插入一個(gè)0,最后仍丟棄溢出的數(shù)據(jù),仍取原來(lái)的數(shù)組長(zhǎng)度的數(shù)據(jù)。

分析:

如果「從前向后」進(jìn)?原地復(fù)寫操作的話,由于 0 的出現(xiàn)會(huì)復(fù)寫兩次,導(dǎo)致沒(méi)有復(fù)寫的數(shù)「被覆
蓋掉」。因此我們選擇「從后往前」的復(fù)寫策略。
但是「從后向前」復(fù)寫的時(shí)候,我們需要找到「最后?個(gè)復(fù)寫的數(shù)」,因此我們的?體流程分兩
步:
? 1. 先找到最后?個(gè)復(fù)寫的數(shù)

我們先初始化兩個(gè)指針 cur = 0 dest = -1

當(dāng) cur < n 的時(shí)候,?直執(zhí)?下?循環(huán):
判斷 cur 位置的元素:
? 如果是 0 的話, dest 往后移動(dòng)兩位;
? 否則, dest 往后移動(dòng)?位。
? 判斷 dest 時(shí)候已經(jīng)到結(jié)束位置,如果結(jié)束就終?循環(huán);
? 如果沒(méi)有結(jié)束, cur++ ,繼續(xù)判斷。

注意:

要判斷 dest 是否越界到 n 的位置:
如果越界,執(zhí)?下?三步:
  1. n - 1 位置的值修改成 0
  2. cur 向移動(dòng)?步;
  1. dest 向前移動(dòng)兩步。

? 2.然后從后向前進(jìn)?復(fù)寫操作

cur 位置開(kāi)始往前遍歷原數(shù)組,依次還原出復(fù)寫后的結(jié)果數(shù)組:

判斷 cur 位置的值:
1. 如果是 0 dest 以及 dest - 1 位置修改成 0 dest -= 2
2. 如果? 0: dest 位置修改成 0 dest -= 1
cur-- ,復(fù)寫下?個(gè)位置

代碼實(shí)現(xiàn):

class Solution {public void duplicateZeros(int[] arr) {int len=arr.length,cur=0,dest=-1;while(cur<len){if(arr[cur]==0){dest+=2;}else{dest++;}if(dest==len-1)break;if(dest>len-1){arr[len-1]=0;cur--;dest=len-2;break;}cur++;}if(dest==cur)return;while(cur>=0){if(arr[cur]!=0){arr[dest--]=arr[cur--];}else{arr[dest--]=0;arr[dest--]=0;cur--;}}}
}


二、盛?最多的容器

題目描述:

題目分析:

我們可以設(shè)兩個(gè)指針 left right 分別指向容器的左右兩個(gè)端點(diǎn),此時(shí)容器的容積 :
v = (right - left) * min( height[right], height[left])
容器的左邊界為 height[left] ,右邊界為 height[right] 。
為了?便敘述,我們假設(shè)「左邊邊界」?于「右邊邊界」。
如果此時(shí)我們固定?個(gè)邊界,改變另?個(gè)邊界,?的容積會(huì)有如下變化形式:
  • 容器的寬度?定變?。
  • 由于左邊界較?,決定了?的?度。如果改變左邊界,新的???度不確定,但是可能會(huì)超過(guò)原來(lái)左邊界的柱??度,因此容器的容積可能會(huì)增?。
  • 如果改變右邊界,?論右邊界移動(dòng)到哪?,新的??的?度?定不會(huì)超過(guò)左邊界,也就是不會(huì)超過(guò)現(xiàn)在的???度,但是由于容器的寬度減?,因此容器的容積?定會(huì)變?的。
由此可?,左邊界和其余邊界的組合情況都可以舍去。所以我們可以 left++ 跳過(guò)這個(gè)邊界,繼續(xù)去判斷下?個(gè)左右邊界。
  • 當(dāng)我們不斷重復(fù)上述過(guò)程,每次都可以舍去?量不必要的枚舉過(guò)程,直到 left right 遇。期間產(chǎn)?的所有的容積??的最?值,就是最終答案。

代碼實(shí)現(xiàn):

class Solution {public int maxArea(int[] height) {int l=0,r=height.length-1,max=0,t;while(l<r){if(height[l]<height[r]){t=height[l]*(r-l);l++;}else{t=height[r]*(r-l);r--;}if(max<t)max=t;}return max;}
}


三、有效三?形的個(gè)數(shù)

題目鏈接

題目描述:

題目分析:

首先我們得知道,三條邊能構(gòu)成三角形的充要條件是:任意兩邊之和大于第三邊。

不過(guò)事實(shí)上,我們只要保證兩條短邊和大于最長(zhǎng)邊即可。

因此,我們可以先將數(shù)組從小到大進(jìn)行排序,接著用一個(gè)指針 j 固定一個(gè)「最?邊」,然后在?這條邊?的有序數(shù)組中找出?個(gè)?元組,使這個(gè)?元組之和?于這個(gè)最?邊。由于數(shù)組是有序的,我們可以利?「對(duì)撞指針」來(lái)優(yōu)化

設(shè)最?邊枚舉到 j?位置,區(qū)間 [left, right] 是 j?位置左邊的區(qū)間(也就是?它?的區(qū)間):

  • 如果 nums[left] + nums[right] > nums[i]

說(shuō)明 [left, right - 1] 區(qū)間上的所有元素均可以與 nums[right] 構(gòu)成? nums[j] ?的?元組

則滿?條件的有 right - left

此時(shí) right 位置的元素的所有情況相當(dāng)于全部考慮完畢, right-- ,進(jìn)?下?輪判斷

  • ?如果 nums[left] + nums[right] <= nums[i]

說(shuō)明 left 位置的元素是不可能與 [left + 1, right] 位置上的元素構(gòu)成滿?條件的?元組

left 位置的元素可以舍去, left++ 進(jìn)?下輪循環(huán)

代碼實(shí)現(xiàn):

class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int sum=0;for(int j=nums.length-1;j>=2;j--){int l=0,r=j-1;while(l<r){if(nums[l]+nums[r]>nums[j]){sum=sum+r-l;r--;}else{l++;}}}return sum;}
}


?四、三數(shù)之和

題目鏈接

題目描述:

題目分析:

這題其實(shí)與上一題十分相似,都是要找一個(gè)滿足一定條件的三元組,因此同樣,我們可以采用先排序,接著用一個(gè)指針 j 固定一個(gè)數(shù) a,接著在之后的區(qū)間內(nèi),利用雙指針?biāo)惴?/span>找到兩數(shù)之和等于-a即可

需要注意的是,題目要求進(jìn)行「去重」操作:

  1. 找到?個(gè)結(jié)果之后, left right 指針要「跳過(guò)重復(fù)」的元素;
  2. 當(dāng)使?完?次雙指針?biāo)惴ㄖ?#xff0c;固定的 a 也要「跳過(guò)重復(fù)」的元素

代碼實(shí)現(xiàn):

class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> ans = new ArrayList<List<Integer>>();int n=nums.length;for(int j=0;j<n;){if(nums[j]>0)break;int l=j+1,r=n-1;int target=-nums[j];while(l<r){int sum=nums[l]+nums[r];if(sum==target){ans.add(new ArrayList<Integer>(Arrays.asList(nums[l],nums[r],                                         nums[j])));if(nums[r]==nums[l])break;l++;r--;while(l<r&&nums[r+1]==nums[r])r--;while(l<r&&nums[l-1]==nums[l])l++;}else if(sum>target){r--;}else{l++;    }  }j++;while(j<n&&nums[j]==nums[j-1])j++;}return ans;}
}


五、四數(shù)之和

題目鏈接

題目描述:

題目描述:

這題的思想其實(shí)也與三數(shù)之和類似,我們只需要先排序,再用一個(gè)指針 i 固定一個(gè)數(shù) a在這個(gè)數(shù) a 的后?區(qū)間上,利?「三數(shù)之和」找到三個(gè)數(shù),使這三個(gè)數(shù)的和等于 target - a 即可

代碼實(shí)現(xiàn):

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {int n=nums.length;long t,q;Arrays.sort(nums);List<List<Integer>> ans=new ArrayList<List<Integer>>();for(int i=0;i<n;){t=target;t-=nums[i];//if(t<0)return ans;for(int j=i+1;j<n;){q=t;q-=nums[j];int l=j+1,r=n-1;while(l<r){int sum=nums[l]+nums[r];if(sum==q){List<Integer> list=new ArrayList<Integer>();list.add(nums[i]);list.add(nums[j]);list.add(nums[l]);list.add(nums[r]);ans.add(list);l++;r--;while(l<r&&nums[l]==nums[l-1])l++;while(l<r&&nums[r]==nums[r+1])r--;}else if(sum>q)r--;else l++;}j++;while(j<n&&nums[j]==nums[j-1])j++;}i++;while(i<n&&nums[i]==nums[i-1])i++;}return ans;}
}


?總結(jié)

雙指針技巧的關(guān)鍵點(diǎn)

  1. 初始化:通常一個(gè)指針指向序列的開(kāi)始位置,另一個(gè)指針指向序列的結(jié)束位置或某個(gè)特定位置。
  2. 移動(dòng)規(guī)則:根據(jù)問(wèn)題的具體情況定義指針的移動(dòng)規(guī)則,如當(dāng)條件不滿足時(shí)向前或向后移動(dòng)。
  3. 更新?tīng)顟B(tài):在每次移動(dòng)指針之后更新當(dāng)前的狀態(tài),如累加、記錄最大值等。
  4. 退出條件:當(dāng)兩個(gè)指針相遇或某個(gè)指針超出界限時(shí)結(jié)束循環(huán)。

雙指針?biāo)惴ㄊ且环N簡(jiǎn)單而有效的算法技巧,通過(guò)維護(hù)兩個(gè)指針的狀態(tài)來(lái)簡(jiǎn)化問(wèn)題的復(fù)雜度。合理地運(yùn)用雙指針?lè)?#xff0c;可以幫助我們?cè)谔幚頂?shù)組和字符串問(wèn)題時(shí)更加高效地達(dá)成目標(biāo)。


那么本篇文章就到此為止了,如果覺(jué)得這篇文章對(duì)你有幫助的話,可以點(diǎn)一下關(guān)注和點(diǎn)贊來(lái)支持作者哦。如果有什么講的不對(duì)的地方歡迎在評(píng)論區(qū)指出,希望能夠和你們一起進(jìn)步?

http://www.risenshineclean.com/news/50984.html

相關(guān)文章:

  • 學(xué)校網(wǎng)站源碼php地推團(tuán)隊(duì)接單平臺(tái)
  • phpcms v9 網(wǎng)站搬家軟件培訓(xùn)機(jī)構(gòu)排名
  • 開(kāi)源展示型網(wǎng)站沈陽(yáng)seo優(yōu)化新勢(shì)力
  • 網(wǎng)站建設(shè)推廣選stso88效果好91關(guān)鍵詞
  • 專業(yè)做網(wǎng)站的技術(shù)人員百度網(wǎng)站如何優(yōu)化排名
  • 怎么做網(wǎng)站開(kāi)發(fā)中國(guó)最新消息
  • 深圳網(wǎng)站建設(shè)哪家公司好我贏網(wǎng)客服系統(tǒng)
  • window2003iis建好的網(wǎng)站營(yíng)銷型網(wǎng)站建設(shè)論文
  • WordPress主題沒(méi)有刪除站內(nèi)優(yōu)化seo
  • 做網(wǎng)站北京重慶seo技術(shù)教程博客
  • 長(zhǎng)沙優(yōu)化網(wǎng)站技術(shù)廠家seo網(wǎng)站推廣有哪些
  • 網(wǎng)站建設(shè)和錢外貿(mào)網(wǎng)站免費(fèi)推廣b2b
  • 網(wǎng)站如何能讓百度收錄網(wǎng)站數(shù)據(jù)
  • 做社區(qū)網(wǎng)站用什么程序?qū)幉╯eo排名外包
  • 網(wǎng)站建設(shè)資訊版塊如何做用戶運(yùn)營(yíng)百度網(wǎng)盤搜索神器
  • 低代碼開(kāi)發(fā)平臺(tái) 開(kāi)源文大俠seo博客
  • 網(wǎng)站制作網(wǎng)站建設(shè)項(xiàng)目規(guī)劃書軟文平臺(tái)有哪些
  • 網(wǎng)站的建站流程個(gè)人建站
  • 網(wǎng)站做淘寶客aso優(yōu)化服務(wù)站
  • 做母嬰產(chǎn)品的網(wǎng)站寧波網(wǎng)站建設(shè)網(wǎng)站排名優(yōu)化
  • 武漢商城網(wǎng)站制作西安疫情最新通知
  • 建筑外觀設(shè)計(jì)網(wǎng)站推薦淘寶標(biāo)題優(yōu)化網(wǎng)站
  • 做昆特牌的網(wǎng)站重慶seo教程
  • 修改數(shù)據(jù)庫(kù)密碼 進(jìn)不了網(wǎng)站后臺(tái)石家莊網(wǎng)站建設(shè)
  • 園嶺網(wǎng)站建設(shè)附近有沒(méi)有學(xué)電腦培訓(xùn)的
  • 做接口的網(wǎng)站廣告?zhèn)髅焦窘?jīng)營(yíng)范圍
  • java 網(wǎng)站開(kāi)發(fā) 順序刷死粉網(wǎng)站推廣
  • 湛江企業(yè)網(wǎng)站建站模板靠譜的拉新平臺(tái)
  • 網(wǎng)站后臺(tái)更新怎么做可口可樂(lè)軟文范例
  • 山東疫情最新消息今天上海優(yōu)化網(wǎng)站seo公司