专栏首页韦弦的偶尔分享Swift 移动零 - LeetCode

Swift 移动零 - LeetCode

题目:移动零

描述:
给定一个数组 nums, 编写一个函数将所有 0 移动到它的末尾,同时保持非零元素的相对顺序。

例如, 定义 nums = [0, 1, 0, 3, 12],调用函数之后, nums 应为 [1, 3, 12, 0, 0]。

注意事项:
必须在原数组上操作,不要为一个新数组分配额外空间。
尽量减少操作总数。

思路:增加标志位(j)记录从头开始的非零元素后面的位置,循环数组,当元素非零时,交换nums[i]和nums[j],即将找到的非零元素移动到当前非零元素串后面。

代码如下:

class Solution {
     func moveZeroes(_ nums: inout [Int]) {
        let count = nums.count
        var j = 0
        for i in 0..<count {
            if nums[i] != 0 {
                nums.swapAt(i, j)
                j += 1
            }
        }
    }
}

//这里交换用的是Swift提供的 swapAt(i: Int, j: Int) 函数
//当然交换可以自己写,我是真的有点懒
用Swift开始学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Swift 冒泡排序及优化

    时间复杂度 冒泡排序的最佳时间复杂度为O(n),即初始状态就是排好序的。 冒泡排序的最坏时间复杂复杂度为O(n2),即初始状态就是逆序的。 冒泡排序的平均...

    韦弦zhy
  • Swift 旋转数组 - LeetCode

    例如,如果 n = 7 , k = 3,给定数组 [1,2,3,4,5,6,7] ,向右旋转后的结果为 [5,6,7,1,2,3,4]。

    韦弦zhy
  • Swift 存在重复 - LeetCode

    如果任何值在数组中出现至少两次,函数应该返回 true。如果每个元素都不相同,则返回 false。

    韦弦zhy
  • LeetCode 75,题目虽然简单,但你能想到最佳解法吗?

    今天是LeetCode专题的44篇文章,我们一起来看下LeetCode的75题,颜色排序 Sort Colors。

    TechFlow-承志
  • Leetcode打卡 | No.016 最接近的三数之和

    欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

    小小詹同学
  • 【每天一道编程系列-2018.3.6】(Ans)

    Given an array S of n integers, are there elements a, b, c in S such that a + b ...

    yesr
  • 一天一大 leet(计算右侧小于当前元素的个数)难度:困难-Day20200711

    给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质:counts[i] 的值是 nums[i] 右侧小于 nu...

    用户6549452
  • 【LeetCode - 015】三数之和

    每次从数组中选出一个数k。从剩下的数中求目标等于target-k的2sum问题。这里须要注意的是有个小技巧:当我们从数组中选出第i数时,我们仅仅须...

    周三不加班
  • 剑指Offer - 面试题57. 和为s的两个数字(双指针)

    输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。

    Michael阿明
  • leetcode448. Find All Numbers Disappeared in an Array

    假设一个长度为n的整数数组,数组中的元素的值位于[1,n]区间中。问,该数组中有哪些[1,n]区间中的整数没有出现?

    眯眯眼的猫头鹰

扫码关注云+社区

领取腾讯云代金券