文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。
这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
相关文章:
- LeetCode:55. Jump Game(跳远比赛)
- Leetcode:300. Longest Increasing Subsequence(最大增长序列)
- LeetCode:560. Subarray Sum Equals K(找出数组中连续子串和等于k)
文章目录:
题目描述:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
来源:力扣(LeetCode)
java实现方法1:
/**
* 移动数组将非0的地方不变,后面的地方覆盖0
*
* @param nums 数组
*/
private void moveZeroes(int[] nums) {
int index = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0) {
nums[index] = nums[i];
index++;
}
}
for (int j = index; j < nums.length; j++) {
nums[j] = 0;
}
}
时间复杂度:O(n);
空间复杂度:O(1)
python实现方法1:
def move_zeroes(self, nums: List[int]) -> None:
'''
数字将0移到后面,保存前面相对顺序不变
Args:
nums: 数组
Returns:
None
'''
index = 0
for i in range(len(nums)):
if nums[i] != 0:
nums[index] = nums[i]
index += 1
while index < len(nums):
nums[index] = 0
index += 1
时间复杂度:O(n);
空间复杂度:O(1)