老师3-4 的优化方案里面应该还可以继续优化

来源:3-4 即使简单的问题,也有很多优化的思路

旧街深港

2020-12-20

老师3-4的算法应该还可以再优化一下 就是将for循环的 i=0 修改为 i=k 优化的方案做到的是 没有必要每次都从0开始遍历 每次从已经交换完位置的数字开始遍历 因为这个不是排序操作

写回答

1回答

旧街深港

提问者

2020-12-20

原代码

int cutpoint1=0;
for (int i=0;i<nums.length;i++){

   if (nums[i]!=0) {
       int cut=nums[i];
       nums[cutpoint1]=cut;
       nums[i]=nums[cutpoint1];
       cutpoint1++;
   }


再次优化后的代码

int cutpoint1=0;
for (int i=cutpoint1;i<nums.length;i++){

   if (nums[i]!=0) {
       int cut=nums[i];
       nums[cutpoint1]=cut;
       nums[i]=nums[cutpoint1];
       cutpoint1++;
   }

0
1
liuyubobobo
抱歉,我是不是没有理解你的问题? 你给的第二个代码,因为 cutpoint1 初始是 0,所以 for 的初始 i=cutpoint1 等价于 i = 0,和第一个代码完全等价。 继续加油!:)
2020-12-20
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程