当前位置: 首页 > news >正文

leetcode刷题(46-50)

算法是码农的基本功,也是各个大厂必考察的重点,让我们一起坚持写题吧。

遇事不决,可问春风,春风不语,即是本心。

我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可以啦,慢慢来,会很快,向前走,别回头。

目录

1.全排列

2.全排列II

3.旋转图像

4.字母异位词分组

5.Pow(x,n)


1.全排列

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/permutations/description/

思路:该题的数组默认没有重复的,所以不需要考虑数字重复的问题。

方法1:标记回溯法,使用vis数组标记元素是否访问过,使用数字k标记访问了多少个元素,vis数组避免重复访问同一个元素,当访问的元素k等于数组的长度,则存入结果集合。

class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new ArrayList<>() ;List<Integer> tmp = new ArrayList<>() ;boolean [] vis = new boolean[nums.length] ;dfs(nums, 0, res, tmp, vis) ;return res ;}public void dfs(int [] nums, int k, List<List<Integer>> res, List<Integer> tmp, boolean [] vis){if(k == nums.length){res.add(new ArrayList<>(tmp)) ;}for(int i=0; i<nums.length; i++){if(vis[i]){continue ;}vis[i] = true ;tmp.add(nums[i]) ;//k标记有几个元素dfs(nums, k+1, res, tmp, vis) ;tmp.remove(k) ;vis[i] = false ;}}
}

方法2:交换法,每次全排列之前需要先交换元素,然后再进行全排列,全排列完成之后交换回来。

class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new ArrayList<>() ;List<Integer> tmp = new ArrayList<>() ;boolean [] vis = new boolean[nums.length] ;dfs(nums, 0, res, tmp) ;return res ;}public void dfs(int [] nums, int k, List<List<Integer>> res, List<Integer> tmp){if(k == nums.length){for(int i=0; i<nums.length; i++){tmp.add(nums[i]) ;}res.add(new ArrayList<>(tmp)) ;tmp.clear() ;}for(int i=k; i<nums.length; i++){swap(nums, i, k) ;dfs(nums, k+1, res, tmp) ;swap(nums,i,k) ;}}public void swap(int [] nums, int x, int y){int tmp = nums[x] ;nums[x] = nums[y] ;nums[y] = tmp ;}
}

2.全排列II

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/permutations-ii/description/

思路:因为含有重复元素,首先需要对数组元素按照升序排序,然后使用标记回溯法,进行标记,除了访问过的元素不访问,也要避免元素的重复访问。

class Solution {public List<List<Integer>> permuteUnique(int[] nums) {List<List<Integer>> res = new ArrayList<>() ;List<Integer> tmp = new ArrayList<>() ;boolean [] vis = new boolean [nums.length] ;Arrays.sort(nums) ;dfs(nums,0,res,tmp,vis) ;return res ;}public void dfs(int [] nums, int k, List<List<Integer>> res, List<Integer> tmp, boolean [] vis){if(k == nums.length){res.add(new ArrayList<>(tmp)) ;}for(int i=0; i<nums.length; i++){if(vis[i] || (i>0 && vis[i-1] && nums[i-1]==nums[i])){continue ;}vis[i] = true ;tmp.add(nums[i]) ;dfs(nums, k+1, res, tmp, vis) ;tmp.remove(k) ;vis[i] = false ;}}
}

3.旋转图像

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/rotate-image/description/

思路:

方法1:开辟一个新的二维数组来存储元素,当然题目要求不让使用这种方法。

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;int [][] res = new int [n][n] ;for(int i=n-1; i>=0; i--){for(int j=0; j<n; j++){res[j][n-i-1] = matrix[i][j] ;}}for(int i=0; i<n; i++){for(int j=0; j<n; j++){matrix[i][j] = res[i][j] ;}}}
}

方法2:原地旋转数组,不需要额外的开辟存储空间,先水平翻转,然后沿着主对角线翻转。

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;// 先水平翻转for(int i=0; i<n/2; i++){for(int j=0; j<n; j++){int tmp = matrix[i][j] ;matrix[i][j] = matrix[n-i-1][j] ;matrix[n-i-1][j] = tmp ;}}// 沿着主对角线翻转for(int i=0; i<n; i++){for(int j=0; j<i; j++){int tmp = matrix[i][j] ;matrix[i][j] = matrix[j][i] ;matrix[j][i] = tmp ;}}}
}

4.字母异位词分组

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/group-anagrams/

思路:

class Solution {public List<List<String>> groupAnagrams(String[] strs) {List<List<String>> res = new ArrayList<>() ;Map<String, List<String>> map = new HashMap<String,List<String>>() ;for(int i=0; i<strs.length; i++){char [] c = strs[i].toCharArray() ;Arrays.sort(c) ;String str = new String(c) ;List<String> list = map.getOrDefault(str, new ArrayList<String>()) ;list.add(strs[i]) ;map.put(str, list) ;}for(List<String> values : map.values()){res.add(values) ;}return res ;}
}

5.Pow(x,n)

题目链接:. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/powx-n/

思路:题解说是什么快速幂+递归/迭代,直接调api不香吗。

class Solution {public double myPow(double x, int n) {return Math.pow(x,n) ;}
}

相关文章:

leetcode刷题(46-50)

算法是码农的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写题吧。 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就可以啦…...

[渗透测试学习] Runner-HackTheBox

Runner-HackTheBox 信息搜集 nmap扫描端口 nmap -sV -v 10.10.11.13扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0) 80/tcp open http nginx 1.18.0 (Ubuntu) 8000…...

keil5显示内存和存储占用百分比进度条工具

简介 [Keil5_disp_size_bar] 以进度条百分比来显示keil编译后生成的固件对芯片的内存ram和存储flash的占用情况, 并生成各个源码文件对ram和flash的占比整合排序后的map信息的表格和饼图。 原理是使用C语言遍历当前目录找到keil工程和编译后生成的map文件 然后读取工程文件和m…...

示例:推荐一个应用Adorner做的消息对话框

一、目的&#xff1a;开发过程中&#xff0c;经常用到对话框&#xff0c;下面演示一个应用Adorner做的带遮盖层蒙版的控件&#xff0c;使用MainWindow的Adorner实现不需要额外定义遮盖层&#xff0c;使用Object作为参数&#xff0c;可自定义DataTemplate定制消息显示样式 二、效…...

Building wheels for collected packages: mmcv, mmcv-full 卡住

安装 anime-face-detector 的时候遇到一个问题&#xff1a;Installation takes forever #1386&#xff1a;在构建mmcv-full时卡住&#xff0c;这里分享下解决方法&#xff08;安装 mmcv 同理&#xff0c;将下面命令中的 mmcv-full 替换成 mmcv&#xff09; 具体表现如下&#x…...

可视化表单拖拽生成器优势多 助力流程化办公!

当前&#xff0c;很多企业需要实现流程化办公&#xff0c;进入数字化转型时期。要想实现这一目标&#xff0c;就需要借助更优质的平台产品。低代码技术平台是得到企业喜爱的发展平台&#xff0c;拥有可视化操作、灵活、高效、更可靠等优势特点&#xff0c;在推动企业实现流程化…...

数据集制作——语义分割前png、jpg格式标签图转yolo格式.txt文件(附代码)

&#x1f4aa; 专业从事且热爱图像处理&#xff0c;图像处理专栏更新如下&#x1f447;&#xff1a; &#x1f4dd;《图像去噪》 &#x1f4dd;《超分辨率重建》 &#x1f4dd;《语义分割》 &#x1f4dd;《风格迁移》 &#x1f4dd;《目标检测》 &#x1f4dd;《暗光增强》 &a…...

机器学习课程复习——ANN

Q&#xff1a;ANN&#xff1f; 基本架构 由输入层、隐藏层、输出层等构建前馈/反馈传播 工作原理 先加权求和&#xff1a;每个神经元的输出是输入加权和的激活再送入激活函数&#xff1a;激活函数的存在使得其能够拟合各类非线性任务 联想&#xff1a;像adaboosting的加权求…...

C++回溯算法(2)

棋盘问题 #include<bits/stdc.h> using namespace std; void func(int,int); bool tf(int,int); void c(); int n,k; char a[110][110]; int cnt20; int main() {cin>>n>>k;for(int i0;i<n;i){for(int j0;j<n;j){cin>>a[i][j];}}func(0,0);cout…...

流量有限、日活低的APP适合对接广告变现吗?

APP广告变现&#xff0c;总用户数和日活用户&#xff08;DUA&#xff09;是衡量APP价值和影响力的重要指标之一。 APP DUA过万&#xff0c;尤其是大几万时&#xff0c;通常具备了商业化价值&#xff0c;适合接入广告变现。日活1W意味着每天有1万名用户在使用这款应用&#xff…...

Shell 学习笔记 - 变量的类型 + 变量的赋值

1.6 Shell 变量的类型 Shell 变量分为四类&#xff0c;分别是 自定义变量环境变量位置变量预定义变量 根据工作要求临时定义的变量称为自定义变量&#xff1b; 环境变量一般是指用 export 内置命令导出的变量&#xff0c;用于定义 Shell 的运行环境&#xff0c;保证 Shell …...

vue播放flv格式的直播流

在ios无法播放&#xff0c;安卓可以 安装 npm install flv.js --save页面 <template><div><videoref"videoElement"style"width: 100%; height: 100%"autoplayplaysinlinemuted></video></div> </template><scr…...

Qt入门小项目 | 实现一个图片查看器

文章目录 一、实现一个图片查看软件 一、实现一个图片查看软件 需要实现的功能&#xff1a; 打开目录选择图片显示图片的名字显示图片 在以上功能的基础上进行优化&#xff0c;需要解决如下问题&#xff1a; 如何记住上次打开的路径&#xff1f; 将路径保存到配置文件中&#x…...

qt仿制qq登录界面

#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {// 设置窗口大小this->resize(window_width, window_heigth);// 固定窗口大小this->setFixedSize(window_width, window_heigth);// 设置窗口图标this->se…...

HashMap详解(含动画演示)

目录 HashMap1、HashMap的继承体系2、HashMap底层数据结构3、HashMap的构造函数①、无参构造②、有参构造1 和 有参构造2 (可以自定义初始容量和负载因子)③、有参构造3(接受一个Map参数)JDK 8之前版本的哈希方法&#xff1a;JDK 8版本的哈希方法 4、拉链法解决哈希冲突什么是拉…...

TVS的原理及选型

目录 案例描述 TVS管的功能与作用&#xff1a; TVS选型注意事项&#xff1a; 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V&#xff0c;而选型的TVS管位SMJ40CA&#xff0c;其保护电压为40V未…...

【机器学习】无监督学习:探索数据背后的隐藏模式

在机器学习的广阔领域中&#xff0c;监督学习因其直观的训练方式和广泛的应用场景&#xff0c;往往受到更多的关注。然而&#xff0c;随着数据量和数据类型的不断增长&#xff0c;无监督学习的重要性日益凸显。本文将详细介绍无监督学习的理论基础、常用算法及其在实际中的应用…...

使用Elasticsearch在同一索引中区分不同类型的文档

在使用Elasticsearch时&#xff0c;有时我们需要在同一个索引中存放不同类型的文档&#xff0c;并且这些文档的字段可能不一致。在早期版本中&#xff0c;我们可以使用types来实现&#xff0c;但在Elasticsearch 7.x及更高版本中&#xff0c;types概念已被弃用。本文将介绍如何…...

驾校在线考试系统源码 手机+PC+平板自适应

Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应&#xff0c;机动车驾驶培训学校驾校类网站源码带手机端 运行环境&#xff1a;phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应...

c++的多态,继承,抽象类,虚函数表,虚函数等题目+分析

目录 题目 代码题 分析 主观题 题目 代码题 class A { public:virtual void func(int val 1) {std::cout << "A->" << val << std::endl;}virtual void test() { func(); } };class B : public A { public:void func(int val 0) { std…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...