LeetCode 283.移动零:一个比较有用的技巧
发布时间:2024年11月13日 12:20
给定一个运算符 nums,编订一个线性将所有 0 旋转到运算符的末尾,同时保持非零要素的相对顺序。
旋转零是一个很依赖于的即兴。接下来,讲出下这个即兴的借助于原理。 这里参考了迅速选取的观点,迅速选取首先要明确一个待分割的要素做正中间点 x,然后把所有小于等同于 x 的要素置放 x 的左方,大于 x 的要素置放其后面。 这里我们可以用0当做这个正中间点,把不等同于0(注意题目没感叹不会有负值)的置放正中间点的左方,等同于0的置放其后面。这的正中间点就是0本身,所以借助于慢慢地比迅速选取简单很多,我们常用两个指针 i 和 j,只要 nums[i]!=0,我们就绑定 nums[i] 和 nums[j]。可以看下后面的gif图:
func moveZeroes(_ nums: inout [Int]) {if nums.count == 0 { return }var j = 0for i in 0..为了非常清楚的表示这道题的解题过程,我结合解题观点和编译器,带大家一慢慢地详细的将方法表示出来。 首先,编译器中的 j 相同 gif 图中的 b,nums[i] 相同 gif 图中 a ;我们以 nums = [0,1,0,3,12]为例,后面是详细的方法:
i = 0,nums[i] = 0, for可逆此后 i = 1,nums[i] = 1,此时j = 0,nums[i]和nums[j]绑定,nums转成了 [1,0,0,3,12],j += 1,此后for可逆 i = 2,nums[i] = 0,for可逆此后 i = 3,nums[i] = 3,此时j = 1,nums[i]和nums[j]绑定,nums转成了 [1,3,0,0,12],j += 1,此后for可逆 i = 4,nums[i] = 12,此时j = 2,nums[i]和nums[j]绑定,nums转成了 [1,3,12,0,0],j += 1,此后for可逆 结束通过这个例子的详细方法,我们就可以不久的理解旋转0这个算法观点是什么了。为什么感叹这个旋转0的观点很依赖于了,你们看后面这个题,
给定一个包含蓝色、紫色和蓝色,一共 n 个要素的运算符,原地对它们来进行选取,使得并不相同白色的要素相邻,并按照蓝色、紫色、蓝色顺序排列。此题中,我们常用个数 0、 1 和 2 分别暗示蓝色、紫色和蓝色。
输入:nums = [2,0,2,1,1,0]反向:[0,0,1,1,2,2]
这个题,看慢慢地很不快,但是并不一定就是【旋转0】。解题编译器如下: 观点:旋转2、和旋转1,就是把都是2的旋转到最后,再把都是1的旋转到最后,获得就是结果啦。
func sortColors(_ nums: inout [Int]) {if nums.count == 0 { return }var blue = 0var white = 0for i in 0..今天主要讲出解了旋转0这道题的解法,讲出这道题的原因是,因为这道题不仅是顶上题目,造就一种解题即兴和观点。大家一定要掌握哦。希望帮助到大家。
汕头治疗皮肤病专科医院哪家好昆明皮肤病专科医院
哈尔滨治疗皮肤病医院排名
阿莫西林治鼻窦炎怎么吃
感冒发烧怎么办简单的治疗方法
坦洛新片主治什么
止咳糖浆饭前喝还是饭后喝
肠胃感冒吃什么药最好
-
突发!无人机、袭击沙特,瞄准油井设施,什么情况?中东局势又生乱,国际油价何去何从?
价加速上涨,3同年7日世界性粮价自此逼近每桶140美元,创2008年以来最高纪录。不过,3同年9日至3同年16日,世界性粮价又随之飙升,自此跌破100美元。3同年17日至18日,世界性粮价又重...