代码随想录刷题学习日记

ops/2024/11/18 7:43:18/

仅为个人记录复盘学习历程,解题思路来自代码随想录

代码随想录刷题笔记总结网址:
代码随想录

90.子集II

给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

提供参数:整数数组nums。

主要操作:

递归三要素

1.返回值类型和输入参数:

全局变量res记录所有结果,全局变量path记录单个结果,返回值类型为void;

输入参数nums,和起始索引startIndex;

2.终止条件:

如果随着startIndex的不断增加,i会大于等于nums.length,不需要终止条件会自动停止。

3.单层递归逻辑:

3.1记录当前节点值。

3.2使用for循环横向遍历解空间树:

3.2.1判断当前节点是否与前一节点重复,如果是,跳出本次循环;

3.2.2递归纵向遍历解空间树。

3.2.3回溯

代码大致如下:

    public List<List<Integer>>res;public List<Integer>path;public List<List<Integer>> subsetsWithDup(int[] nums) {res=new ArrayList<>();path=new ArrayList<>();Arrays.sort(nums);backTrace(nums,0);return res;}public void backTrace(int[]nums,int startIndex){res.add(new ArrayList(path));//终止条件//if(path.size()>=nums.length)return;for(int i=startIndex;i<nums.length;i++){if(i>startIndex&&nums[i]==nums[i-1])continue;path.add(nums[i]);backTrace(nums,i+1);path.remove(path.size()-1);}}


http://www.ppmy.cn/ops/134650.html

相关文章

初识网络原理

1.网络互联 网络互联就是将多台计算机连接在一起&#xff0c;完成数据共享。 数据共享本质就是网络数据传输&#xff0c;即计算机之间通过网络来传输数据&#xff0c;也称为网络通信。 根据网络互联的规模不同&#xff0c;可以划分为局域网和广域网。 1.1 局域网 局域网&am…

uni-app快速入门(六)--rpx尺寸单位与Flex布局

一、uni-app尺寸单位 uni-app支持的通用尺寸单位包括px、rpx。为支持跨平台&#xff0c;在搭建空驾驶建议使用Flex布局。px指屏幕像素&#xff0c;rpx是响应式像素&#xff0c;是根据屏幕宽度自适应的动态单位。假如屏幕宽度为750像素&#xff0c;750rpx正好为屏幕宽度。uni-ap…

2024年09月CCF-GESP编程能力等级认证Python编程四级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控…

Spark RDD中常用聚合算子源码层面的对比分析

在 Spark RDD 中&#xff0c;groupByKey、reduceByKey、foldByKey 和 aggregateByKey 是常用的聚合算子&#xff0c;适用于按键进行数据分组和聚合。它们的实现方式各不相同&#xff0c;涉及底层调用的函数也有区别。以下是对这些算子在源码层面的分析&#xff0c;以及每个算子…

使用 Grafana api 查询 Datasource 数据

一、使用grafana 的api 接口 官方API 二、生成Api key 点击 Administration -》Users and accss -》Service accounts 进入页面 点击Add service account 创建 service account 点击Add service account token 点击 Generate token , 就可以生成 api key 了 三、进入grafana…

设计模式-行为型-常用-2:职责链模式、状态模式、迭代器模式

目录 职责链模式 概念 代码实现 使用场景 扩展-Servlet Filter 扩展-Spring Interceptor 状态模式 什么是有限状态机&#xff1f; 状态机实现方式一&#xff1a;分支逻辑法 状态机实现方式二&#xff1a;查表法 状态机实现方式三&#xff1a;状态模式 迭代器模式 定…

函数式组件和类组件的区别

函数式组件和类组件的区别 函数式组件和类组件的区别1. 语法2. 状态管理3. 生命周期管理4. this5. 创建组件6. 继承7. 性能优化 为什么推荐使用函数式组件函数式组件的优势 函数式组件和类组件的区别 1. 语法 函数式组件&#xff1a;基于函数式编程思想&#xff0c;使用 函数…

c语言学习21数组

1.1数组介绍 概念&#xff1a;数组就是 相同数据类型 的一组数据的集合 数组中每个数据 元素 用一个名字来命名这个集合 数组名 用编号区分 下表&#xff08;从0开始自动标号&#xff09; 当处理大量…