双非二本找工作前的准备day23

 学习目标:

每天复习代码随想录上的题目1-2道算法(时间充足可以继续)

今日碎碎念:

1)滴滴开了暑期实习。

2)今天开始是回溯篇,然后是贪心以及dp,保持打卡!加油啦!

3)今天要做的事情就是,完成算法打卡,然后总结实习的工作,整理好自己的思路,应对后面可能的面试。


力扣刷题

算法

力扣77:77. 组合

未剪枝优化

class Solution {List<List<Integer>> res;List<Integer> list;public List<List<Integer>> combine(int n, int k) {res = new ArrayList<>();list = new ArrayList<>();back(n,k,1);return res;}public void back(int n,int k,int startIndex){//对于回溯最重要的就是确定终止条件if(list.size() == k){//如果小结果集里面的个数为k,就表示要回溯了res.add(new ArrayList<Integer>(list));return;}//如果没满k,就得继续加元素到小结果集里面for(int i = startIndex;i<=n;i++){list.add(i);//进入下一轮选择back(n,k,i+1);//要把添加进去的末尾元素去除list.remove(list.size()-1);}}
}

剪枝优化

解答思路:

        1)当我们继续去找元素的时候有个隐性条件,就是我们最终的小结果集的数量一定得满足k,如果我剩下的数量无法满足k,那就没必要往后找了

        2)比如,n=4,k=4的情况下,不难想出我们的小结果集只有1234这一种情况,而不可能会出现234这种情况。那么当我挑出来了1234这种情况的时候,判断后续数量很明显长度最大为3,不满足k,因此没必要继续遍历

class Solution {List<List<Integer>> res;List<Integer> list;public List<List<Integer>> combine(int n, int k) {res = new ArrayList<>();list = new ArrayList<>();back(n,k,1);return res;}public void back(int n,int k,int startIndex){//对于回溯最重要的就是确定终止条件if(list.size() == k){//如果小结果集里面的个数为k,就表示要回溯了res.add(new ArrayList<Integer>(list));return;}//如果没满k,就得继续加元素到小结果集里面//剪枝说明:如果剩下的数量不足以组成我要求的list了,就没必要往后走了for(int i = startIndex;i<=n-(k-list.size())+1;i++){list.add(i);//进入下一轮选择back(n,k,i+1);//要把添加进去的末尾元素去除list.remove(list.size()-1);}}
}


力扣216:216. 组合总和 III

解答思路:

        1)与上道题思路是类似的,多了剪枝判断而已

class Solution {List<List<Integer>> res;List<Integer> list;public List<List<Integer>> combinationSum3(int k, int n) {res = new ArrayList<>();list = new ArrayList<>();back(k,n,1,0);return res;}public void back(int k,int n,int index,int sum){//剪枝:如果当前和已经大于n,说明不需要往后走了,因为题目给定的集合是有序的if(sum > n) return;//终止条件:小结果集为k就退出,如果sum为n就加入结果集if(list.size() == k){if(sum == n) res.add(new ArrayList<>(list));return;}//开始回溯以及剪枝。剪枝同77题,后面的元素不足以满足数量就不需要继续遍历了for(int i = index;i<=9-(k-list.size())+1;i++){list.add(i);//计算当前总和sum+=i;back(k,n,i+1,sum);//回溯list.remove(list.size()-1);sum-=i;}}
}

力扣17:17. 电话号码的字母组合

解答思路:看注释即可

class Solution {//设置全局列表存储最后的结果List<String> list = new ArrayList<>();public List<String> letterCombinations(String digits) {if (digits == null || digits.length() == 0) {return list;}//初始对应所有的数字,为了直接对应2-9,新增了两个无效的字符串""String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};back(digits,numString,0);return list;}//大量拼接用StringBuilderStringBuilder sb = new StringBuilder();public void back(String digits,String[] numString,int index){//终止条件:index是记录从digits里面选取第几个元素if(index == digits.length()){list.add(sb.toString());return;}//取出当前按下的数字代表的字符串String str = numString[digits.charAt(index)-'0'];for(int i = 0;i<str.length();i++){sb.append(str.charAt(i));back(digits,numString,index+1);sb.deleteCharAt(sb.length()-1);}}
}

 力扣39:39. 组合总和

解答思路:看注释即可

class Solution {List<List<Integer>> res;//大结果集List<Integer> list;//小结果集public List<List<Integer>> combinationSum(int[] candidates, int target) {res = new ArrayList<>();list = new ArrayList<>();//因为原数组是没有排序的,先对原数组进行排序Arrays.sort(candidates);back(candidates,target,0,0);return res;}//参数:数组,目标和,当前和,当前位置(下标)public void back(int[] candidates,int target,int sum,int index){//终止条件: sum == targetif(sum == target){//将小结果集加入大结果集res.add(new ArrayList<>(list));return;}//因为每个数字可以无限制重复被选取,所以index得传入ifor(int i = index;i<candidates.length;i++){if(sum+candidates[i] > target) break;list.add(candidates[i]);back(candidates,target,sum+candidates[i],i);list.remove(list.size()-1);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析直播美颜SDK:计算机视觉在实时视频中的应用

今天&#xff0c;小编将带大家深入探讨直播美颜SDK的原理、应用及其在实时视频中的重要性。 一、直播美颜SDK的原理 直播美颜SDK的核心原理是基于计算机视觉技术&#xff0c;通过识别人脸、肤色、眼睛、嘴巴等关键特征点&#xff0c;对视频图像进行实时处理。其主要包括以下几…

milvus2.4多向量搜索源码分析

milvus2.4多向量搜索源码分析 api入口 HybridSearch是多向量搜索的API。 func (node *Proxy) HybridSearch(ctx context.Context, request *milvuspb.HybridSearchRequest) (*milvuspb.SearchResults, error) {var err errorrsp : &milvuspb.SearchResults{Status: merr…

【前端】-【前端文件操作与文件上传】-【前端接受后端传输文件指南】

目录 前端文件操作与文件上传前端接受后端传输文件指南 前端文件操作与文件上传 一、前端文件上传有两种思路&#xff1a; 二进制blob传输&#xff1a;典型案例是formData传输&#xff0c;相当于用formData搭载二进制的blob传给后端base64传输&#xff1a;转为base64传输&…

基于StatefulSet控制器在Kubernetes上部署MySQL一主多从

一、前提--StatefuSet特性 1.1 有状态的节点控制器 -- StatefulSet 及其网络状态 容器的解决方案是针对无状态应用场景的最佳实践&#xff0c;但对于有状态应用来说&#xff0c;就并非如此了。Kubernetes 用 StatefulSet 解决了有状态应用编排的问题&#xff0c;本文我们就来…

短视频账号没流量怎么办?三个方法提高播放量!沈阳短视频剪辑线下培训

做短视频的最怕什么&#xff1f; 最怕没流量啊&#xff0c;一旦没有流量&#xff0c;就吸引不到粉丝&#xff0c;更别提变现了&#xff01; 但是&#xff0c;不同的短视频账号遇到没流量的情况是不同的。有的是新账号&#xff0c;始终没有流量&#xff1b;而有的是做了很久的账…

旧衣回收小程序开发:线上回收模式成为行业发展趋势

当下人们生活水平在不断提高&#xff0c;对衣服的要求也在增加&#xff0c;更新速度越来越快&#xff0c;闲置下来的旧衣服也在增加&#xff0c;为了减少浪费&#xff0c;旧衣回收行业受到了大众的关注。旧衣回收对我国资源回收、环境保护具有非常大的意义。 在互联网时代下&a…

第9篇:创建Nios II工程之读取Switch的值<二>

Q&#xff1a;上一期我们完成了Quartus硬件工程部分&#xff0c;本期我们创建Nios II软件工程这部分。 A&#xff1a;创建完BSP和Nios II Application之后&#xff0c;在source文件main.c中添加代码&#xff1a;system.h头文件中新增了Switch PIO IP的硬件信息&#xff0c;包括…

Windows cmd bat之特殊符号及变量

cmd 常用变量 bat批处理常用命令 %1~%9表示拖入文件&#xff08;%0以外的输入文件&#xff09;,%0表示批处理文件本身 %0~%1字母意思基本相同&#xff0c;不区分大小写 ::打印当前窗口地址 echo “%cd%” %0 获取当前文件路径 %~d0 …

最新AI实景自动无人直播软件:智能讲解、一键开播,享受24小时自动专业直播体验

在现今数字化时代&#xff08;ai无人直播下载&#xff1a;hzzxar&#xff09;直播行业越来越受到人们的关注和喜爱。随着人工智能的不断发展&#xff0c;AI实景自动无人直播软件应运而生&#xff0c;为商家提供了更便捷、高效的直播方式。本文将介绍如何利用这一创新技术&#…

融知财经:期货交易原理是怎样的?期货交易有哪些特征?

期货的原理是基于对某期货品种未来走势的判断而形成对其合约的买卖交易&#xff0c;因此期货可以解释为买涨或买跌。买涨&#xff0c;即看多交易&#xff0c;预期某期货品种未来价格上涨而进行的买入开仓交易&#xff1b;买跌&#xff0c;即看空交易&#xff0c;预期某期货品种…

简站WordPress主题

简站WordPress主题是一种专为建立网站而设计的WordPress模板&#xff0c;它旨在简化网站建设过程&#xff0c;使得用户能够更容易地创建和管理自己的网站。简站WordPress主题具有以下特点&#xff1a; 易用性&#xff1a;简站WordPress主题被设计为简单易用&#xff0c;适合各…

redisson 使用脚本实现将一个队列的元素弹出并推入另一个队列的原子操作

脚本逻辑&#xff1a; 从队列1弹出元素如果存在值则推入队列2否则返回null RScript script redissonClient.getScript(); final String scriptText """local value redis.call(lpop, KEYS[1]);if value thenredis.call(rpush, KEYS[2], value);return valu…

Android广播机制简介

文章目录 Android广播机制简介广播的基本概念广播的类型广播的使用场景Android广播的优缺点优点缺点 使用Android广播的一些最佳实践: Android广播机制简介 Android广播是一种轻量级的消息传递机制&#xff0c;用于应用程序之间或系统与应用程序之间进行通信。它类似于订阅-发…

java多线程,synchronized

Java多线程——synchronized使用详解_synchronized用法-CSDN博客

squeeze的用法

squeeze是压缩张量的命令 import torch a torch.randn(1,3) print(a) print(a.shape) 比如说squeeze&#xff08;&#xff1f;&#xff09;括号里是啥 就是在哪个维度上删除维度为1 之后的结果 比如上上面那个里子 a是&#xff08;[[]]&#xff09; 但是在下面那个例子中d…

【智能安防监控补光灯调光芯片方案】单节锂电降压恒流驱动芯片FP8013 最大输出3A体积小/静态功耗低/效率高/支持无频闪调光

文章目录 文章目录 前言 一、pandas是什么&#xff1f; 二、使用步骤 1.引入库 2.读入数据 总结 前言 随着智能安防监控技术的不断发展&#xff0c;补光灯的关键性能也日益受到重视。为了提供更好的夜间监控效果&#xff0c;我们需要一种高效、稳定的调光芯片来驱动补光灯的亮…

《米小圈动画古诗》—“诗情画意”也不是很难嘛!

创新是一个民族的灵魂和希望&#xff0c;是一个国家兴旺发达的不竭动力&#xff0c;而学习古诗词就是丰富孩子想象力、培养学生创新精神最有效的方法。因为&#xff0c;诗的韵律&#xff0c;情绪跌宕&#xff0c;可以让孩子在大脑中形成一幅完整的图画。 诗歌带给人最美妙的体…

python selenium 滑动后获取动态追加的元素

在使用Python的Selenium库进行网页自动化时&#xff0c;如果需要滑动页面并获取动态追加的元素&#xff0c;可以使用以下步骤&#xff1a; 使用Selenium定位到滑动条元素。 执行滑动操作&#xff0c;可以调用execute_script方法来模拟滑动。 使用WebDriverWait和expected_co…

java垃圾收集器详解

垃圾收集器 Serial Serial收集器是Java虚拟机中最基本的垃圾回收&#xff08;GC&#xff09;收集器之一&#xff0c;主要特点是单线程的垃圾回收。虽然它只使用一个线程进行垃圾回收&#xff0c;但Serial收集器在单CPU环境或者小内存资源的情况下表现得相当高效。由于其单线程…

PMP考试没过怎么办?如何补考?(附复核流程)

最近刷小红书&#xff0c;看很多人都在晒PMP通过的成绩截图&#xff0c;一方面为大家开心&#xff0c;终于拿到了期盼已久的PMP&#xff0c;但同时也有宝子发挥失常没通过考试&#xff0c;所以这期针对没考过的宝子们&#xff0c;出一期复盘文章&#xff0c;无论结果如何&#…