DAY8-力扣刷题

1.全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

通过对之前习题的了解,一看到该题就想到了用回溯法

46. 全排列 - 力扣(LeetCode)

方法一:回溯法 

class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> res = new ArrayList<List<Integer>>();List<Integer> output = new ArrayList<Integer>();for (int num : nums) {output.add(num);}int n = nums.length;backtrack(n, output, res, 0);return res;}public void backtrack(int n, List<Integer> output, List<List<Integer>> res, int first) {// 所有数都填完了if (first == n) {res.add(new ArrayList<Integer>(output));}for (int i = first; i < n; i++) {// 动态维护数组Collections.swap(output, first, i);// 继续递归填下一个数backtrack(n, output, res, first + 1);// 撤销操作Collections.swap(output, first, i);}}
}

2.全排列2

47. 全排列 II - 力扣(LeetCode)

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

与上一个题目主要的不同是可包含重复数字

方法一:搜索回溯 

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

3.旋转图像

48. 旋转图像 - 力扣(LeetCode)

给定一个 × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。

你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

方法一:使用辅助数组

class Solution {public void rotate(int[][] matrix) {//manner1:使用辅助数组int n=matrix.length;int[][] newMatrix=new int[n][n];for(int i=0;i<n;i++){for(int j=0;j<n;j++){newMatrix[j][n-i-1]=matrix[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){matrix[i][j]=newMatrix[i][j];}}}
}

 方法二:用翻转代替旋转

4.字母异位词分组

49. 字母异位词分组 - 力扣(LeetCode)

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

字母异位词判断:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

方法一:排序

由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

Java HashMap getOrDefault() 方法

getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值

注:hashmap 是 HashMap 类的一个对象。

参数说明:

  • key - 键
  • defaultValue - 当指定的key并不存在映射关系中,则返回的该默认值
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map=new HashMap<>();for(String str:strs){char[] array=str.toCharArray();Arrays.sort(array);//进行排序之后与第一个进行比较即可String key=new String(array);List<String> list=map.getOrDefault(key,new ArrayList<String>());list.add(str);map.put(key,list);}return new ArrayList<List<String>>(map.values());}
}

 5.pow(x,n)

 方法一:快速幂 + 递归

分治算法???

class Solution {public double myPow(double x, int n) {long N=n;return N>=0 ? quickMul(x,N) : 1.0/quickMul(x,-N);}public double quickMul(double x,long N){if(N==0){return 1.0;}double y=quickMul(x,N/2);return N%2 ==0 ? y*y:y*y*x;}
}

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

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

相关文章

Java8引入的新特性有哪些?如何使用?

让我来详细列举 Java 8 引入的主要特性&#xff0c;并分别说明它们的概念、使用场景和示例。 1. Lambda 表达式 概念&#xff1a; Lambda 表达式是一种匿名函数&#xff0c;它允许你传递简洁的代码作为方法参数。它可以用来替代 Java 中笨重的匿名类写法&#xff0c;使代码更…

如何编写基本的Java程序

安装Java Development Kit&#xff08;JDK&#xff09;是开发Java应用程序的第一步。 1.下载JDK Java程序必须运行在JVM上&#xff0c;我们第一件事情就是安装JDK。 1.下载地址&#xff1a;Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#jdk…

10W+人都在看的年度技术精选、游戏行业安全、私域、AI实践指南报告整合,码住!

在网易工作了十多年&#xff0c;不说别的&#xff0c;小智在这里光学习就学习到很多干货&#xff0c;今天将这些干货内容统一分享给同仁&#xff01;真的是集齐精华&#xff0c;大家先点赞收藏关注&#x1f44d; 往年&#xff0c;基于网易数智在娱乐社交、游戏、泛零售、政务、…

二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面

Java基础——自动装箱与拆箱

自动装箱与拆箱 装箱&#xff1a;将基本类型用包装器类型包装起来拆箱&#xff1a;将包装器类型转换为基本类型 请看示例&#xff1a; public class Main {public static void main(String[] args) {Integer a 100;Integer b 100;Integer c 128;Integer d 128;System.ou…

智慧物流:实现供应链的技术升级

智慧物流不仅是物流管理系统的智能化升级&#xff0c;更是以物联网、大数据分析等技术手段为基础的一种高效、智能的供应链解决方案。通过实时监控、数据分析和智能优化&#xff0c;智慧物流将传统物流的各个环节有效连接起来&#xff0c;实现信息流、资金流和物流的无缝对接。…

AMD模块的使用案例-基于普通htm

AMD模块的使用案例-基于普通html 实现过程结果 实现过程 AMD 是一种适用于浏览器环境的模块化规范&#xff0c;主要用于异步加载模块。RequireJS 是实现 AMD 的一个流行库。 ​ 使用案例&#xff1a; 文件目录&#xff1a; index.html&#xff0c;使用<script data-main&…

【每天学会一个渗透测试工具】AppScan安装及使用指南

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 https://www.hcl-software.com/appscan AppScan是一种综合型漏洞扫描工具&#xff0c;采用SaaS解决方案&#xff0c;它将所以…

打造完美启动页:关键策略与设计技巧

启动页&#xff08;Splash Screen&#xff09;设计是指在应用程序启动时&#xff0c;首先展示给用户的界面设计。这个界面通常在应用加载或初始化期间显示&#xff0c;其主要目的是为用户提供一个视觉缓冲&#xff0c;展示品牌标识&#xff0c;并减少用户在等待过程中的焦虑感。…

【锐捷】VSU环境下部署VAC

配置要求 1.两台核心交换机部署VSU&#xff0c;Domain ID为1&#xff0c;S1的Switch ID为1&#xff0c;优先级为150&#xff0c;设备描述为VSU-S1&#xff1b;S2的Switch ID为2&#xff0c;优先级为120&#xff0c;设备描述为VSU-S2&#xff1b;两台设备的G0/48口用于BFD双机检…

python从入门到精通4:变量赋值

在Python编程中&#xff0c;变量赋值是编程基础中的基础&#xff0c;但其中也包含了许多深入的概念和技巧。本教程将深入探讨Python变量赋值的各个方面&#xff0c;包括基本赋值、多重赋值、链式赋值、增量赋值。 一、基本赋值 Python中的变量赋值非常简单直观&#xff0c;你…

【Golang - 90天从新手到大师】Day06 - 数组

系列文章合集 Golang - 90天从新手到大师 数组是golang中最常用的一种数据结构,数组就是同一类型数据的有序集合 定义一个数组 格式: var name [n]type n为数组长度,n>0 且无法修改,type为数组的元素类型如: var a [2]int上面的例子定义了一个长度为2,元素类型为int的数组…

PostgreSQL源码分析——缓冲区管理器

这里我们分析一下PG数据库缓冲区的代码。缓冲区是十分重要的&#xff0c;对数据库的性能和稳定性有着直接的影响。缓冲区是数据库SQL计算层与外部存储&#xff08;磁盘&#xff09;交互的关键。数据页的落盘与读取&#xff0c;都要经过缓冲区。 README src/backend/storage/…

解决企业微信内嵌H5页面导航栏返回上一级是空白页面问题

在项目中,产品要求返回上一级不能空白页,可以是工作台,所以要引入企业微信的返回按钮的用法,以下是详细步骤: 1.引入企业微信的版本内容 <script src"https://res.wx.qq.com/wwopen/js/jsapi/jweixin-1.0.0.js"></script> 在public底下的index.html底…

pdf只要前几页,pdf怎么只要前几页

在现代办公和学习环境中&#xff0c;PDF文件已成为我们日常处理信息的重要工具。然而&#xff0c;有时我们并不需要整个PDF文件的内容&#xff0c;而只是其中的几页。那么&#xff0c;如何高效地提取PDF文件中的特定页面呢&#xff1f;本文将为您介绍几种实用的方法。 打开 “ …

法大大亮相国家级期刊,助力数字政务有实“例”!

近日&#xff0c;在最新发布的国家级学术期刊《市场监督管理》中&#xff0c;法大大作为国内领先的电子签厂商亮相&#xff0c;这也是电子签行业的“第一次”。 截自《市场监督管理》2024年第12期 《市场监督管理》杂志于1953年创刊&#xff0c;是中国工商出版社主办的一本学术…

Uniapp导航栏右侧自定义图标文字按钮

1.再pages.js中找到该页面内容&#xff1a; 进行如下设置&#xff1a; {"path" : "pages/finishPfpOrder/finishPfpOrder","style" : {"navigationBarTitleText": "首件列表","navigationBarBackgroundColor": &…

【Vue-Vben-Admin】1、初次运行和介绍

【Vue-Vben-Admin】1、初次运行和介绍 Vben-Admin 初次运行和介绍 小小的介绍规定版本文件树安装依赖运行项目 小小的介绍 一款 Vue3 Typescript4 Vite2 后台管理项目&#xff0c;功能挺多的&#xff0c;还有组件库 规定版本 此个人文档规定版本为 2.8.0&#xff0c;可能版本…

复习笔记二(动态规划法)

工作指派问题&#xff08;20 分&#xff09; 设有 n 件工作&#xff0c; n 个人&#xff0c;每个人只能做一件工作&#xff0c;每件工作只能安排给一个 人&#xff0c;已知每个人做每件工作的耗费&#xff0c;请设计分支限界算法求解最少耗费的工作指 派。 要求&#xf…

android 获取java c++线程id

android.os.Process.myTid()#include <unistd.h> gettid()