首页 >> 中医减肥

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这道题的解法,讲出这道题的原因是,因为这道题不仅是顶上题目,造就一种解题即兴和观点。大家一定要掌握哦。希望帮助到大家。

汕头治疗皮肤病专科医院哪家好
昆明皮肤病专科医院
哈尔滨治疗皮肤病医院排名
阿莫西林治鼻窦炎怎么吃
感冒发烧怎么办简单的治疗方法
坦洛新片主治什么
止咳糖浆饭前喝还是饭后喝
肠胃感冒吃什么药最好
友情链接