๋ฌธ์
ํ์ด ๊ณผ์
์ ๋ ฌ์ ์ํํ ๋ค์ ๊ฐ์ ํค ๊ฐ์ ๊ฐ์ง๋ ์์๋ค์ ์์๊ฐ ๋ค๋ฐ๋์ง ์๋ ๊ฒ์ stable sort
๋ผ๊ณ ํฉ๋๋ค.
์ด๋ฒ ๋ฌธ์ ์์๋ ์ฃผ์ด์ง ๋ฐฐ์ด์์ 0์ ๋ฐฐ์ด์ ๋์ชฝ์ผ๋ก ์ฎ๊ฒจ์ฃผ๋ ๊ทธ ์์๊ฐ ๋ค๋ฐ๋๋ฉด ์๋๋ ๋ก์ง์ ๊ตฌํํ์์ต๋๋ค.
์ด๋ ๋ณ๋์ array
๋ฅผ ๋ณต์ฌํ์ฌ ๊ตฌํํ๋ฉด ์๋๊ณ ๋ฐฐ์ด ๋ด์์ ์ ๋ ฌ์ด in-place
๋ก ์ํ๋์ด์ผํ๋ฏ๋ก ์ฝ์
์ ๋ ฌ
์ ํ์ฉํ์ฌ ๊ตฌํํ์ต๋๋ค.
์ฝ์
์ ๋ ฌ
์ ๋ฐฐ์ด์ ๋ ์์๋ถํฐ ํ๋์ฉ ์์ ์ ์์น๋ฅผ ์ฐพ์ ์ฝ์
ํด์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ,
์ฌ๊ธฐ์๋ 0์ ๋ฐ๊ฒฌํ ๋๋ง๋ค 0์ด ์์นํ ์ ์๋ ์์น๋ฅผ ๋ฐ๋ณตํด์ ์ฐพ์์ผ๋ก์ O(N^2)
์ ์๊ฐ ๋ณต์ก๋๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค.
์ฝ๋
/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function (nums) {
for (let i = nums.length - 1; i >= 0; i--) {
if (nums[i] === 0) {
let j = i + 1;
while (j < nums.length && nums[j] !== 0) {
nums[j - 1] = nums[j];
j += 1;
}
nums[j - 1] = 0;
}
}
};
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 221 - Maximal Square (Medium) (0) | 2021.03.02 |
---|---|
LeetCode 543 - Diameter of Binary Tree (Easy) (1) | 2021.03.02 |
LeetCode 678 - Valid Parenthesis String (Medium) (0) | 2021.03.02 |
LeetCode 1094 - Car Pooling (Medium) (0) | 2021.03.02 |
LeetCode 49 - Group Anagrams (Medium) (0) | 2021.03.02 |
๐ฌ ๋๊ธ