每日5题Day10 - LeetCode 46 - 50

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:46. 全排列 - 力扣(LeetCode)

class Solution {//这道题就是一个dfs//把所有结果遍历,到叶子节点就可以添加结果了List<Integer> path = new ArrayList<>();List<List<Integer>> res = new ArrayList<>();public List<List<Integer>> permute(int[] nums) {//要给一个flag数组来判断是否被选过//以此来成为排列、不是组合int[] flag = new int[nums.length];traversal(0, nums, flag);return res;}private void traversal(int startindex, int[] nums, int[] flag){if(startindex == nums.length){res.add(new ArrayList(path));return;}for(int i = 0; i < nums.length; i++){if(flag[i] == 0){flag[i] = 1;path.add(nums[i]);traversal(startindex + 1, nums, flag);path.removeLast();flag[i] = 0;}}}
}

第二题:47. 全排列 II - 力扣(LeetCode)

class Solution {List<List<Integer>> res = new ArrayList<>();List<Integer> path = new ArrayList<>();public List<List<Integer>> permuteUnique(int[] nums) {Arrays.sort(nums);int[] flag = new int[nums.length];traversal(0, res, path, nums, flag);return res;}private void traversal(int start, List<List<Integer>> res, List<Integer> path, int[] nums, int[] flag){if(start == nums.length){res.add(new ArrayList<>(path));return;}for(int i = 0; i < nums.length; i++){//和上一题一样,但是数组会有重复的,//所以我们要剪枝去重if(flag[i] == 1 || (i > 0 && nums[i] == nums[i - 1] && flag[i - 1] == 0)){continue;}flag[i] = 1;path.add(nums[i]);traversal(start + 1, res ,path, nums, flag);path.removeLast();flag[i] = 0;}}
}

第三题:48. 旋转图像 - 力扣(LeetCode)

class Solution {public void rotate(int[][] matrix) {//题目要求不能复制来实现,要原地调转,//所以不能笨笨地复制粘贴,那样会用很多额外空间int n = matrix.length;// 先沿对角线翻转for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {int temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}// 再沿中线左右翻转for (int i = 0; i < n; i++) {for (int j = 0; j < n / 2; j++) {int temp = matrix[i][j];matrix[i][j] = matrix[i][n - 1 - j];matrix[i][n - 1 - j] = temp;}}}
}

第四题:49. 字母异位词分组 - 力扣(LeetCode)

class Solution {public List<List<String>> groupAnagrams(String[] strs) {// 朴素的做法,时间长但是空间非常小// 使用 flag 数组标记已经处理过的字符串int[] flag = new int[strs.length];// 结果列表List<List<String>> res = new ArrayList<>();// 遍历每个字符串for(int i = 0; i < strs.length; i++){// 如果当前字符串已经处理过,直接跳过if(flag[i] == 1){continue;}// 临时列表,用于存放同一组异位词List<String> tmp = new ArrayList<>();// 统计当前字符串的字符频率int[] fre = new int[26];for(int j = 0; j < strs[i].length(); j++){fre[strs[i].charAt(j) - 'a']++;}// 遍历剩余字符串,寻找异位词for(int k = i; k < strs.length; k++){int flagg = 0;// 如果当前字符串已经处理过,直接跳过if(flag[k] == 1){continue;}// 统计当前遍历到的字符串的字符频率int[] free = new int[26];for(int j = 0; j < strs[k].length(); j++){free[strs[k].charAt(j) - 'a']++;}// 检查是否为异位词for(int x = 0; x < 26; x++){if(fre[x] != free[x]){flagg = 1;break;}}// 如果是异位词,则加入临时列表,并标记已处理if(flagg == 0){tmp.add(strs[k]);flag[k] = 1;}}// 将当前异位词组加入结果列表res.add(tmp);}return res;}
}

 第五题:50. Pow(x, n) - 力扣(LeetCode)

class Solution {public double myPow(double x, int n) {// 这道题最适合就是使用递归来实现// 如果指数为0,则结果为1if(n == 0) {return 1.0;}// 如果指数为负数,则将底数取倒数,指数取绝对值if(n < 0) {return 1 / (x * myPow(x, -(n + 1)));}// 如果指数为正数,则使用递归计算幂double temp = myPow(x, n / 2);// 如果指数为偶数,则结果为 temp 的平方if(n % 2 == 0) {return temp * temp;} else { // 如果指数为奇数,则结果为 temp 的平方乘以底数return temp * temp * x;}}
}

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

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

相关文章

Java面试题大全(从基础到框架,中间件,持续更新~~~)

从Java基础到数据库&#xff0c;Spring&#xff0c;MyBatis&#xff0c;消息中间件&#xff0c;微服务解决全部Java面试过程中的问题。&#xff08;持续更新~~&#xff09; Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…

消息传递与集成:使用Springboot进行异步通信

消息传递与集成&#xff1a;使用Spring Boot进行异步通信 在现代的分布式系统中&#xff0c;异步通信已经成为了一种常见的设计模式。通过使用消息队列和事件驱动架构&#xff0c;我们可以实现系统之间的解耦&#xff0c;提高系统的可扩展性和可靠性。本文将介绍如何使用Sprin…

汽车防抱死制动系统ABS的单片机程序Proteus仿真设计

次设计对汽车防抱死系统进行简单的设计,针对车速、轮速两个信号进行分析,并根据最佳滑移率计算。采用对比实时滑移率对比分析,ECU控制制动器进行制动力调节使滑移率在制动过程处于最佳范围,保证系统具有良好制动性能。 汽车的制动液压调节器主要包含以下几个部件:调压电磁…

git回退到指定版本,同时提交记录也会删除

第一步&#xff1a; git reset --hard xxx (需要恢复版本的 commit id)第二步&#xff1a;branch_name就是远程分支的名称 git push origin <branch_name> --force

异相(相位不平衡)状态下的合成器效率分析-理论与ADS仿真

异相&#xff08;相位不平衡&#xff09;状态下的合成器效率分析-理论与ADS仿真 12、ADS使用记录之功分器设计中简单介绍了威尔金森功分器的设计方法。一般来讲&#xff0c;功分器反过来就能作为合路器使用&#xff0c;在输入信号相位一致的情况下&#xff0c;各种合路器的效率…

YOLOv8改进 | 卷积模块 | 用DWConv卷积替换Conv【轻量化网络】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在YOLOv8的GFLOPs计算量中,卷积占了其中大多数的比列,为了减少计算量,研究人员提出了用DwConv代替Conv。本文给大家带来的教程是将原来的Conv替换为DwConv。文章在介绍主要的原理后,将手把手教学如何进行模…

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令&#xff1a; net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL&#xff08;-u为用户名-p为密码&#xff09; //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…

infoq读书笔记-云原生时代,如何建设稳定性可观测体系?

而可观测性则是把Log、Trace、Metric拧成了一股绳&#xff0c;让三大支柱互相之间建立亲密的“血缘关系”&#xff0c;通过这种关系我们可以结构化的从整体到局部再到具体细节的观测业务&#xff1a; 图片来自网络如果把业务系统比作一座海上的冰山&#xff0c;监控仅能看到的…

PHP基础学习笔记(面向对象OOP)

类和对象 <?php //声明一个名为 Fruit 的类&#xff0c;它包含两个属性&#xff08;$name 和 $color&#xff09;以及两个用于设置和获取 $name 属性的方法 set_name() 和 get_name()&#xff1a; class Fruit {// Propertiespublic $name;public $color;// Methodsfuncti…

回见,那果园

记不得何时开始骑行&#xff0c;何时开始爬山&#xff0c;何时偶遇洛师傅&#xff0c;何时进了那半山腰的果园。 似乎很远&#xff0c;又很近。 昨天打电话给果园的师傅&#xff0c;本意问问杏是否熟了&#xff0c;周末骑行过去、进山聊天顺道吃个新鲜。 洛师傅呵呵的笑…

Unity | 框架MVC

目录 一、MVC介绍 二、搭建UI界面 三、代码实现 1.Model层 2.View层 3.Controller层 四、MVC框架测试 五、知识补充 一、MVC介绍 model&#xff1a;数据层。界面展示的数据&#xff08;需要进行初始化、更新、保存、事件通知等操作&#xff09;&#xff0c;单例模式&am…

【golang】内存对齐

什么是内存对齐 在访问特定类型变量的时候通常在特定的内存地址访问&#xff0c;这就需要对这些数据在内存中存放的位置有限制&#xff0c;各种类型数据按照一定的规则在空间上排列&#xff0c;而不是顺序的一个接一个的排放&#xff0c;这就是对齐。 内存对齐是编译器的管辖…

机器视觉-硬件

机器视觉-硬件 镜头焦距凸透镜焦点不止一个相机镜头由多个镜片组成对焦和变焦 镜头光圈光圈的位置光圈系数F 镜头的景深景深在光路中的几何意义 远心镜头远心镜头的种类远心镜头特性应用场景 镜头的分辨率镜头反差镜头的MTF曲线镜头的靶面尺寸镜头的几何相差相机镜头接口螺纹接…

个人手里有一批宽带资源,想跑PCDN 如何做?

网友问我手里有一批宽带资源&#xff0c;想要跑PCDN该如何做&#xff0c;可以按照以下步骤操作&#xff1a; 了解PCDN的基本原理和市场需求。PCDN&#xff08;Peer-to-Content Delivery Network&#xff09;是一种基于P2P技术的内容分发网络&#xff0c;通过将用户设备上的空闲…

javas-core VS java-object-diff

对照工具选择 javas-core 和 java-object-diff ,对比demo https://github.com/kofgame/objectdiff-vs-javers&#xff0c;都为同源对比&#xff0c;都支持嵌套对象。 使用JMH测试方法进行性能测试&#xff0c;使用题库的QuestionResponseVO对象来进行对照对比&#xff0c;进行…

【Python搞定车载自动化测试】——Python基于Pytest框架实现UDS诊断自动化(含Python源码)

系列文章目录 【Python搞定车载自动化测试】系列文章目录汇总 文章目录 系列文章目录&#x1f4af;&#x1f4af;&#x1f4af; 前言&#x1f4af;&#x1f4af;&#x1f4af;一、环境搭建1.软件环境2.硬件环境 二、目录结构三、源码展示1.诊断基础函数方法2.诊断业务函数方法…

深入探索Python基础:两个至关重要的函数

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、初学者的基石&#xff1a;print与input函数 二、类型转换&#xff1a;从字符串到浮点数…

第十四节:带你梳理Vue2:filters过滤器

过滤器是什么? 过滤器是一种在模板中处理数据的便捷方式, 会经常在其他模板语言中见到, 他们特别适合对字符串和数字进行简单的显示变化. 1. 通过案例理解过滤器 示例: 对于数字价格处理 1.1 Mastache语法中处理价格数字 <div id"app"><!-- 正常处理 -…

【完整解析】2024电工杯数学建模A题论文与代码

园区微电网风光储协调优化配置 1 论文2 代码分享2.1 第三题第一问 3 数据与代码 1 论文 2 代码分享 2.1 第三题第一问 function anssq3w1ObjFun(ttt,id); %ttttt(1); tt[750,0,0,1000,600,500]; limttt(1)*200; limmttt(2)*500*0.9-ttt(2)*500*0.1; t1ttt(3)*1000;t2ttt(4)*1…

设计模式--模板方法模式

模板方法模式是一种行为设计模式&#xff0c;它定义了一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中实现。这种模式在许多应用场景中非常有用&#xff0c;例如在实现算法的通用框架、代码重用、封装实现细节以及确保算法的正确执行时。 应用场景 实现算法的通…