leetcode刷题

Posted Panda_Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题相关的知识,希望对你有一定的参考价值。

1. leetcode 78 子集

1.1 扩展法:学会另外一种数组遍历

for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体

 /* 建立一个数组 */
 int[] integers = {1234};
 /* 开始遍历 */
 for (int i : integers) {
     System.out.println(i); /* 依次输出“1”、“2”、“3”、“4” */
 }
class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<Integer> list = new ArrayList<>();
        List<List<Integer>> ans = new LinkedList<>();
        ans.add(list);
    // 扩展法
        for(int i = 0; i < nums.length; i++){
            List<List<Integer>> temp = new ArrayList<>();
            for(List<Integer> list1 : ans){
                 List<Integer> r = new ArrayList<>(list1);
                 r.add(nums[i]);
                 temp.add(r);
            }
            for(List<Integer> list2 : temp){
                ans.add(list2);
            }
        }
        return ans;
    }

1.2 回溯法(掌握-回溯法的模板)

回溯法也是一种递归,递归有终止条件,每次回溯时需要删除刚访问的元素。
掌握:删除列表最后一个元素,List删除元素时,默认按索引删除,而不是对象删除

class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<Integer> list = new ArrayList<Integer>();
        List<List<Integer>> ans = new LinkedList<List<Integer>>();
         ans.add(new ArrayList<>());
        if(nums.length == 0){
            return ans;
        }

        for(int i = 1; i<=nums.length; i++){
            backtracking(nums,ans,i,0,new ArrayList<>());    
        }
        return ans;
    }
    private void backtracking(int[] nums,List<List<Integer>> ans,int length,int index,List<Integer> subset){
        if(subset.size() == length){
            List<Integer> temp = new ArrayList<>(subset);
            ans.add(temp);
            return; 
        }

        for(int i = index;i<nums.length;i++){
            subset.add(nums[i]);
            backtracking(nums,ans,length,i+1,subset);
            subset.remove(subset.size()-1);
        }
    }
}

以上是关于leetcode刷题的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题笔记-数据结构-day16

LeetCode刷题笔记-数据结构-day5

LeetCode刷题笔记-数据结构-day20

LeetCode刷题笔记-数据结构-day12

LeetCode刷题笔记-数据结构-day12

LeetCode刷题笔记-动态规划-day4