[閒聊] 每日leetcode 75 - Day7
283. Move Zeroes
題目:
給你一個陣列 把0全部移動到最後面
思路:
最簡單思路就是粗暴地從左掃到右
用兩個指標 write read
非 0 就 nums[write] = nums[read]; write += 1;
最後還要補 0
但題目有個要求是最小化操作
那要改用swap
也很好改 對非 0 成員多一個判斷 if write != read
之後 nums.swap(read, write);
這方法不只簡單操作還不用補 0
很棒
Code:
impl Solution {
pub fn move_zeroes(nums: &mut Vec<i32>) {
let mut write = 0;
for read in 0..nums.len() {
if nums[read] != 0 {
if write != read {
nums.swap(read, write);
}
write += 1;
}
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.143.163 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1749452934.A.853.html
推
06/09 15:16,
6月前
, 1F
06/09 15:16, 1F
→
06/09 15:24,
6月前
, 2F
06/09 15:24, 2F
→
06/09 15:28,
6月前
, 3F
06/09 15:28, 3F
→
06/09 15:28,
6月前
, 4F
06/09 15:28, 4F
※ 編輯: yam276 (60.248.143.163 臺灣), 06/09/2025 17:13:00