日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

Leetcode1695. 删除子数组的最大得分[C++题解]:双指针、区间内元素不能重复

發(fā)布時(shí)間:2025/4/5 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode1695. 删除子数组的最大得分[C++题解]:双指针、区间内元素不能重复 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

      • 題目分析
      • 題目鏈接

題目分析

1。數(shù)組中沒有負(fù)數(shù)意味著什么?意味著區(qū)間越大,其和越大。
2. 對(duì)于給定下標(biāo)i,其左邊的一個(gè)區(qū)間滿足沒有重復(fù)數(shù)的左邊界(最左邊)下標(biāo)為j,我們有,隨著i右移,坐標(biāo)j也會(huì)單調(diào)右移。 因此可以使用雙指針來(lái)做!
3. 還有一個(gè)問題:如何快速判斷一個(gè)區(qū)間內(nèi)有沒有重復(fù)數(shù)?可以開一個(gè)hash table ,記錄每個(gè)數(shù)出現(xiàn)多少次,如果下標(biāo)i的數(shù)加進(jìn)來(lái)之后,發(fā)現(xiàn)hash table里的值大于1,說(shuō)明出現(xiàn)重復(fù)數(shù),而且重復(fù)的一定是下標(biāo)為i的這個(gè)數(shù)。 此時(shí),我們就讓左邊界的指針j一直往后走,直到下標(biāo)i這個(gè)數(shù)不重復(fù)為止

ac代碼
時(shí)間復(fù)雜度O(n)

class Solution { public:int maximumUniqueSubarray(vector<int>& nums) {int res=0;//最終的區(qū)間和unordered_map<int,int> hash; //記錄元素出現(xiàn)的次數(shù)int s=0;//遍歷過(guò)程中使用的區(qū)間和for(int i=0,j=0; i<nums.size();i++){int x=nums[i];hash[x]++; //出現(xiàn)次數(shù)++s+=x;while(hash[x]>1){//左指針一直右移,直到x不再重復(fù)為止s-=nums[j]; //由于左指針右移,區(qū)間和需要減去相應(yīng)的元素hash[nums[j]]--; //元素個(gè)數(shù)也要減少j++;}res=max(res,s); //不同的右指針i 都要確定一個(gè)最大值}return res;} };

題目鏈接

Leetcode1695. 刪除子數(shù)組的最大得分

總結(jié)

以上是生活随笔為你收集整理的Leetcode1695. 删除子数组的最大得分[C++题解]:双指针、区间内元素不能重复的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。