Leetcode 283题 递归实现

来源:5-5 递归运行的机制:递归的微观解读

weibo_新的旅涂_0

2018-08-08

最近在学习二叉搜索树,发现递归理解的不太好,所以找了一些题用递归做,下面的解答可以通过递归实现(Solution accepted)。不知道有没有更好的递归解法,谢谢老师了。

283. Move Zeroes

class Solution {

   public void moveZeroes(int[] nums, int left) {

        int temp = 0;

      


        if (left == nums.length - 1) {

            return ;

        }


        if(nums[left] != 0) {

            moveZeroes(nums, left+1);

        }


        else {

            for (int i=left+1; i<nums.length; ++i) {

                if(nums[i] != 0){

                    temp = nums[left];

                    nums[left] = nums[i];

                    nums[i] = temp;

                    break;

                }

                

            }

            moveZeroes(nums, left + 1);

        }

    }


    public void moveZeroes(int[] nums){

        moveZeroes(nums, 0);

    }

}


写回答

1回答

liuyubobobo

2018-08-09

挺好的。


这个问题不是很好的一个递归问题模型,所以不适合用来练习递归。建议在Leetcode中,寻找:

1)链表;树结构;二分搜索树结构;线段树结构;等等具有典型的递归性质的结构问题来做。大部分都可以使用递归。其实我觉得练习结构就够了:)

2)回溯问题和动态规划的问题,大部分都可以使用递归。


加油!:)

2
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程