摘要:同時(shí)我們將這個(gè)元素賦值給,這樣就可以保證,不等于的個(gè)元素完美占據(jù)數(shù)組的前個(gè)位置。方法二當(dāng)我們遇到和等于值的元素的時(shí)候,我們將數(shù)組尾端的元素和此元素交換位置。之后減少一位遍歷長(zhǎng)度。同時(shí)在下次遍歷中,我們會(huì)重新檢查新過(guò)來(lái)的元素。
題目介紹
要求輸入:給定數(shù)組nums[],數(shù)字val
要求輸出:數(shù)組中不等于val的元素個(gè)數(shù)n,同時(shí)要求不等于數(shù)字val的n個(gè)元素放置在數(shù)組的前n個(gè)位置(不要求順序)
例子方法一
Given nums = [3,2,2,3], val = 3,
Your function should return length = 2, with the first two elements of nums being 2.
這道題只關(guān)注最后數(shù)組的前n個(gè)元素。所以很容易想到我們遍歷整個(gè)數(shù)組,每當(dāng)遇到不等于val的值的時(shí)候,我們將計(jì)數(shù)的i值加一。同時(shí)我們將這個(gè)元素賦值給nums[i],這樣就可以保證,不等于val的n個(gè)元素完美占據(jù)數(shù)組的前n個(gè)位置。
public int removeElement(int[] nums, int val) { int i = 0; for (int j = 0; j < nums.length; j++) { if (nums[j] != val) { nums[i] = nums[j]; i++; } } return i; }方法二
當(dāng)我們遇到和等于val值的元素的時(shí)候,我們將數(shù)組尾端的元素和此元素交換位置。之后減少一位遍歷長(zhǎng)度。同時(shí)在下次遍歷中,我們會(huì)重新檢查新swap過(guò)來(lái)的元素。
public int removeElement(int[] nums, int val) { int i = 0; int n = nums.length; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; // reduce array size by one n--; } else { i++; } } return n; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68173.html
摘要:題目闡釋根據(jù)告知的元素,從列表中刪除,并計(jì)算剩余元素的個(gè)數(shù)重點(diǎn)通過(guò)移動(dòng)一個(gè)列表的元素,記錄位置,將一個(gè)列表內(nèi)的所有元素分類(lèi)。 題目闡釋: 根據(jù)告知的元素,從列表中刪除,并計(jì)算剩余元素的個(gè)數(shù) 重點(diǎn): 通過(guò)移動(dòng)一個(gè)列表的元素,記錄index位置,將一個(gè)列表內(nèi)的所有元素分類(lèi)。 計(jì)算剩余元素的個(gè)數(shù),也可以看成先分類(lèi),再統(tǒng)計(jì)。 Given an array nums and a value va...
摘要:復(fù)雜度分析時(shí)間復(fù)雜度遍歷次空間復(fù)雜度還有沒(méi)有優(yōu)化空間方法在某些特定場(chǎng)景下會(huì)進(jìn)行不必要的復(fù)制操作,影響性能。注意尾部的元素有可能是需要剔除的,所以,下一輪循環(huán)要從當(dāng)前索引重新開(kāi)始。 給定一個(gè)數(shù)組 nums?和一個(gè)值 val,你需要原地移除所有數(shù)值等于?val?的元素,返回移除后數(shù)組的新長(zhǎng)度。不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。 元素的...
摘要:前言從開(kāi)始寫(xiě)相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)懍F(xiàn)在翻起來(lái)覺(jué)得蠻亂的??赡艽蠹铱粗卜浅2环奖?。所以在這里做個(gè)索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開(kāi)始寫(xiě)leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)憽F(xiàn)在翻起來(lái)覺(jué)得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。 順序整理 1~50 1...
摘要:只有不等于給定數(shù)字的數(shù),才會(huì)被拷貝到子數(shù)組的邊界上。代碼只拷貝非給定數(shù)字的元素交換法復(fù)雜度時(shí)間空間思路因?yàn)轭}目中并不要求相對(duì)順序保持一致,所以有進(jìn)一步優(yōu)化的空間。 Remove Element Given an array and a value, remove all instances of that value in place and return the new lengt...
摘要:雙指針頭指針等于指定元素的時(shí)候,用尾指針的值替換的值否則頭指針繼續(xù)向后走。最后返回,就是所有非元素的數(shù)量。 Problem Given an array and a value, remove all occurrences of that value in place and return the new length. The order of elements can be ch...
閱讀 2005·2021-08-11 11:13
閱讀 1028·2021-07-25 21:37
閱讀 2583·2019-08-29 18:42
閱讀 2519·2019-08-26 12:18
閱讀 924·2019-08-26 11:29
閱讀 1697·2019-08-23 17:17
閱讀 2672·2019-08-23 15:55
閱讀 2615·2019-08-23 14:34