最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

代碼隨想錄:數(shù)組

2023-03-11 21:39 作者:づOwOづ  | 我要投稿

數(shù)組是存儲在連續(xù)內(nèi)存空間上的相同類型數(shù)據(jù)集合,地址必須連續(xù),下標(biāo)從0開始

因為地址連續(xù)所以想要刪除某一元素就要移動后續(xù)所有元素的地址所以數(shù)組中的元素不能刪除只能覆蓋

實(shí)際使用注意最大下標(biāo)為.Length屬性的止-1

力扣704:二分查找

public?class?Solution?{

????public?int?Search(int[]?nums,?int?target)?{

????????int?left=0,?right=nums.Length-1;

//左右邊界

????????while?(left<=right? )? ? //閉區(qū)間

{? ??

????????????int?middle=left+(right-left)/2;

????????????if?(nums[middle]>target){

????????????????right=middle-1;、

//根據(jù)查找數(shù)據(jù)值大小決定下次的邊界下標(biāo)

????????????}

????????????else?if(nums[middle]<target){

????????????????left=middle+1;

????????????}

????????????else{

????????????????return?middle;

//找到目標(biāo)返回middle即為下標(biāo)

????????????}

????????}

????????return?-1;

//找不到返回-1

????}

}

有序且無重復(fù)元素的查找,此時使用二分查找

力扣27:移除元素

//雙指針,常用于數(shù)組與鏈表

public?class?Solution?{

????public?int?RemoveElement(int[]?nums,?int?val)?{

????????int?left=0;

????????for(int?right=0;right<nums.Length;right++){

????????????if(nums[right]!=val){

????????????????nums[left]=nums[right];

???????????????left+=1;、

//在每次循環(huán)中判斷快指針指向的元素值是否為要刪除的值,不是則把值賦給慢指針指的元素,是則快指針繼續(xù)移動

????????????}

????????}

????????return?left;

????}

}

最開始做本題時選擇對每次快指針指向目標(biāo)值時快慢指針?biāo)冈亟粨Q,多出了許多判斷操作,在時間復(fù)雜度相同的情況下判斷操作較多對程序用時差距影響很大,再一次循環(huán)中完成且判斷操作少才能優(yōu)化時間

本題中直接對原數(shù)組進(jìn)行操作,空間復(fù)雜度O(1)。

返回值是int,實(shí)際操作為

// nums 是以“引用”方式傳遞的。也就是說,不對實(shí)參作任何拷貝

int len = removeElement(nums, val);


// 在函數(shù)里修改輸入數(shù)組對于調(diào)用者是可見的。

// 根據(jù)你的函數(shù)返回的長度, 它會打印出數(shù)組中 該長度范圍內(nèi) 的所有元素。

for (int i = 0; i < len; i++) {

? ? print(nums[i]);

}


來源:力扣(LeetCode)

鏈接:https://leetcode.cn/problems/remove-element

著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

力扣209:長度最小的子數(shù)組

public?class?Solution?{

????public?int?MinSubArrayLen(int?target,?int[]?nums)?{

????????int?left=0,right=0,count=100001;

????????long?add=nums[right];

//滑動窗口

????????while(right<nums.Length){

????????????if(add<target){

????????????????right++;

????????????????if(right!=nums.Length){

????????????????????add+=nums[right];

//窗口右邊界移動

????????????????}

???????????????

????????????}

????????????else{

????????????????count=Math.Min(count,right-left+1);

????????????????add-=nums[left];

????????????????left++;

//窗口左邊界移動

????????????}

????????????

????????}

????????if(count==100001){

????????????count=0;

//目標(biāo)數(shù)據(jù)最大為10^5因此設(shè)定count初始值為10^5+1,若最后未找到結(jié)果則按題目要求返回0

????????}

????????return?count;

????}

}

滑動窗口可視為雙指針的一種,通過不斷調(diào)整子數(shù)組大小降低時間復(fù)雜度

力扣59:螺旋矩陣II

public?class?Solution?{

????public?int[][]?GenerateMatrix(int?n)?{

????????int[][]?cells=new?int[n][];

????????for(int?a=0;a<n;a++){

????????????cells[a]=new?int[n];

//初始化一個交錯數(shù)組,滿足題目中的返回值類型

????????}

????????int?x=0,y=0;//起始位置

????????int?i=0,j=0;

????????int?offset=1;//每條邊遍歷長度用

????????int?count=1;//填入的數(shù)字

????????int?loop=n/2;//進(jìn)行循環(huán)多少圈

????????int?mid=n/2;//矩陣中心坐標(biāo)

????????while(loop-->0){

????????????i=x;

????????????j=y;

????????????for(j=y;j<y+n-offset;j++){? ?//y+n-offset,y起始位置,n一條邊的元素數(shù)量,offset扣除的本次遍歷這一行不填入數(shù)字的格子數(shù)

????????????????cells[i][j]=count++;//填數(shù)

????????????}

????????????for(i=x;i<x+n-offset;i++){

????????????????cells[i][j]=count++;

????????????}

????????????for(;j>y;j--){

????????????????cells[i][j]=count++;

????????????}

????????????for(;i>x;i--){

????????????????cells[i][j]=count++;

????????????}

????????????offset+=2;//轉(zhuǎn)了一圈,下次循環(huán)就要少填兩個格子

????????????x++;

????????????y++;//下次循環(huán)開始在下一圈,起點(diǎn)從[0,0]變成[1,1]

????????}

????????if(n%2!=0){

????????????cells[mid][mid]=count;//若為奇數(shù)階的矩陣要手動填入最中心的元素

????????}

????????

????????

????????return?cells;


????}

}

暴力循環(huán),注意循環(huán)過程中堅持循環(huán)不變量,即每次循環(huán)的一條邊都是相同區(qū)間,這里選擇左閉右開


代碼隨想錄:數(shù)組的評論 (共 條)

分享到微博請遵守國家法律
婺源县| 紫云| 邢台市| 夏河县| 郓城县| 如皋市| 岳池县| 和硕县| 桦川县| 延津县| 甘孜县| 两当县| 太仆寺旗| 门头沟区| 东乡族自治县| 丹江口市| 云梦县| 明溪县| 佛教| 桓台县| 左云县| 广西| 临城县| 喀喇| 峨眉山市| 项城市| 瑞金市| 枣阳市| 巴楚县| 永顺县| 濮阳市| 连江县| 大同县| 咸阳市| 海口市| 酉阳| 海安县| 鄯善县| 双鸭山市| 辰溪县| 蒲江县|