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

力扣热题100Day05:15.三数之和,17. 电话号码的字母组合,19. 删除链表的倒数第 N 个结点

15.三数之和

题目链接:15. 三数之和 - 力扣(Leetcode)

思路:

(1)双指针,在外层for循环里加入两个指针,left和right

(2)排序:为了更好地进行去重

(2)去重:a. 外层for循环要去重 b. 里层循环,双指针找到符合条件的 list 也要去重判断

Java代码:(见注释)

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();//先判断特殊情况if(nums.length == 0 || nums == null){return res;}//排序:为了方便后续去重Arrays.sort(nums);for(int i = 0; i < nums.length;i++){//判断特殊情况if(nums[i] > 0){return res;}//去重if(i > 0 && nums[i - 1] == nums[i]){continue;}//定义双指针int left = i + 1;int right = nums.length - 1;while(left < right){int sum = nums[i] + nums[left] + nums[right];if(sum > 0){right--;}else if(sum < 0){left++;}//找到else{List<Integer> path = new ArrayList<>();path.addAll(Arrays.asList(nums[i],nums[left],nums[right]));res.add(path);//去重while(left < right && nums[left] == nums[left + 1]) left++;while(left < right && nums[right] == nums[right - 1]) right--;left++;right--;}}}return res;}
}

17. 电话号码的字母组合

题目链接:17. 电话号码的字母组合 - 力扣(Leetcode)

思路:属于回溯算法中的组合问题,回溯三部曲,此题是在多个独立的集合里取值进行组合

(1)确定函数返回值与参数

参数有digits,string数组,以及index,其中这里的index不是之前的startIndex,index表示的是digits的第几个字符

(2)确定终止条件

当index == digits.length()时,收获结果

(3)确定单层递归逻辑

巩固的知识:

(1)StringBuilder的删除指定位置字符的方法为deleteCharAt()

(2)获取StringBuilder的长度,sb.length()

Java代码:

class Solution {List<String> res = new ArrayList<>();StringBuilder sb = new StringBuilder();public List<String> letterCombinations(String digits) {//先判断特殊情况if(digits.equals("") || digits.length() == 0){return res;}//将数字转换为string,定义一个string数组String[] strarr = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};backtracing(digits,strarr,0);return res;}//这里index表示的digits中的第几个字符private void backtracing(String digits,String[] strarr,int index){//(2)确定终止条件,当index == digits.length()时if(index == digits.length()){res.add(new String(sb));return;}//(3)确定单层逻辑String str = strarr[digits.charAt(index) - '0'];//先找到string数组中对应的字符串字母//这里没有用到startIndex,因为此题是多个独立的集合取值for(int i = 0; i < str.length();i++){sb.append(str.charAt(i));//递归backtracing(digits,strarr,index + 1);//回溯sb.deleteCharAt(sb.length() - 1);}}
}

19. 删除链表的倒数第 N 个结点

题目链接:19. 删除链表的倒数第 N 个结点 - 力扣(Leetcode)

思路:双指针 + 虚拟头节点

(1)定义两个指针,pre 和 cur 均指向虚拟头节点,首先让cur移动n步

(2)然后两个指针开始同时移动,直到cur.next为空结束,此时pre指针就到达了要删除节点的前一个节点,让temp = pre.next.next  ,pre.next = temp;

Java代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {//先判断特殊情况if(head == null){return null;}//定义一个虚拟头节点ListNode dummynode = new ListNode();dummynode.next = head;//定义两个指针ListNode pre = dummynode;ListNode cur = dummynode;for(int i = 0; i < n;i++){cur = cur.next;}while(cur.next != null){pre = pre.next;cur = cur.next;}//此时pre指向要删除节点的前一个节点ListNode temp = pre.next.next;pre.next = temp;return dummynode.next;}
}

相关文章:

力扣热题100Day05:15.三数之和,17. 电话号码的字母组合,19. 删除链表的倒数第 N 个结点

15.三数之和 题目链接&#xff1a;15. 三数之和 - 力扣&#xff08;Leetcode&#xff09; 思路&#xff1a; &#xff08;1&#xff09;双指针&#xff0c;在外层for循环里加入两个指针&#xff0c;left和right &#xff08;2&#xff09;排序&#xff1a;为了更好地进行去…...

探索开源:获取完整的 GitHub 社区数据集

本篇文章聊聊 GitHub 开放数据集的获取和整理&#xff0c;分享一些数据整理的细节技巧&#xff0c;以及一些相对粗浅的数据背后的事情。 写在前面 分析 GitHub 上的项目和开发者获取是深入、真实的了解开源世界演进的方法之一。 在 GHArchive 项目中&#xff0c;我们能够看到…...

github ssh密钥配置,克隆远程仓库

GitHub的SSH配置 在往github上push项目的时候&#xff0c;如果走https的方式&#xff0c;每次都需要输入账号密码&#xff0c;非常麻烦。而采用ssh的方式&#xff0c;就不再需要输入&#xff0c;只需要在github自己账号下配置一个ssh key即可&#xff01; 很多朋友在用github管…...

突破年薪百万难关!吃透这套Java真题合集

前言我相信大多 Java 开发的程序员或多或少经历过BAT一些大厂的面试&#xff0c;也清楚一线互联网大厂 Java 面试是有一定难度的&#xff0c;小编经历过多次面试&#xff0c;有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析&#x…...

[黑马程序员SSM框架教程] Spring-11-setter注入

思考&#xff1a;向一个类中传递数据要几种&#xff1f; set方法构造方法 思考&#xff1a;依赖注入描述了在容器中建立bean与bean之间依赖关系的过程&#xff0c;如果bean运行需要数字或字符呢 引用类型简单类型&#xff08;基本数据类型和字符串&#xff09; 注入方式&#x…...

Java多线程(一)--多线程基础知识

1. 为什么要使用并发编程提升多核CPU的利用率&#xff1a;一般来说一台主机上的会有多个CPU核心&#xff0c;我们可以创建多个线程&#xff0c;理论上讲操作系统可以将多个线程分配给不同的CPU去执行&#xff0c;每个CPU执行一个线程&#xff0c;这样就提高了CPU的使用效率&…...

AutoDock, AutoDock-vina等对接工具安装

AutoDock, AutoDock-vina等对接工具安装 AutoDock-GPU安装 下载地址&#xff1a; https://autodock.scripps.edu/downloads/ 将压缩包传送至安装目录中&#xff0c;并解压到当前路径 unzip AutoDock-GPU-develop.zip 找到服务器的cuda的路径&#xff0c;cuda的路径一般默认…...

MySQL常见面试题(2023年最新)

目录1.char和varchar的区别2.数据库的三大范式3.索引是什么4.索引的优点和缺点5.索引怎么设计(优化)6.索引的类型7.索引的数据类型8.索引为什么使用树结构9.二叉查找树、B树、B树10.为什么使用B树不用B树11.最左匹配原则12.MylSAM和InnoDB的区别13.什么是事务14.事务的四大特性…...

C# 泛型详解

C# 泛型详解1、泛型概述2、定义泛型3、泛型的特性4、泛型委托5、泛型的优点在 C# 中&#xff0c;泛型&#xff08;Generic&#xff09;是一种规范&#xff0c;它允许我们使用占位符来定义类和方法&#xff0c;编译器会在编译时将这些占位符替换为指定的类型&#xff0c;利用泛型…...

数据仓库相关术语

数据仓库数据集市事实维度级别数据清洗数据采集数据转换联机分析处理(OLAP OnlineAnalytical Processing )切片切块星型模式雪花模式粒度度量度量值口径指标 原子指标&#xff1a;派生指标衍生指标标签自然键持久键代理键退化维度下钻上卷T0与T1数据挖掘数据科学家总线架构总线…...

【IDEA】常用快捷键

代码补全 快捷键说明sout快速输出System.out.println();psvm快速输出public static void main(String[] args) {}Ctrl Alt Space代码补全 编辑类 快捷键说明Shift Enter向下键入一行&#xff0c;并将光标移到下一行的开头Ctrl Alt Enter当前行上方生成空行&#xff0c;并…...

【调试】sysRq按键使用方法

SysRq键简介 SysRq键是一个魔术案件&#xff0c;只要在内核没有完全卡死的情况下&#xff0c;内核都会相应SysRq 键的输入&#xff0c;使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息。 配置 内核配置选项中要使能CONFIG_MAGIC_SYSRQ选…...

Jenkins Pipeline 语法

官网 ## https://www.jenkins.io/doc/book/pipeline/ 参考文章 ## https://www.jianshu.com/p/215584419f3d 根据Jenkins官网Pipeline给出的解释&#xff0c; 流水线语法分为两种&#xff0c; 一种是声明式流水线&#xff08;Declarative Pipeline&#xff09;另一种是脚本…...

rust语言实现超级简单的杀毒软件,通过哈希扫描病毒。

以下是一个简单的rust语言程序&#xff0c;用于扫描病毒文件并使用哈希表进行比较。该程序可以扫描指定目录中的所有文件&#xff0c;并查找其中是否包含特定的病毒文件。程序可以通过计算文件哈希值并将其与已知的病毒哈希值进行比较来确定文件是否是病毒。注意&#xff0c;这…...

Git仓库中的常用命令

1.第一次使用Git软件前&#xff0c;告诉Git你是谁 git config --global user.name "自定义用户名" git config --global user.email "用户邮箱" 2.查看配置列表 git config --list 3.初始化一个Git仓库&#xff0c;用来管理当前项目 git i…...

arduino和stm32和51和TSM32的区别,树莓派和jetson nano的区别

本科时段接触过很多嵌入式的微处理器和微控制器&#xff0c;但对其使用场景和区别一直没有一个总结&#xff0c;这次收集了一些信息在这总结一下。 Arduino、STM32、51、TMS320和树莓派和jetson nano都是不同的嵌入式系统&#xff0c;它们之间有以下的区别&#xff1a; 开发难度…...

如何进行nginx的负载配置

示例&#xff1a;//多机负载策略&#xff1a;加权轮询(适用于服务器无状态,并且服务器硬件配置不均衡的场景)upstream setServ { server 47.100.110.58:80 weight1; server 47.100.110.59:8080 weight4; }location / {//转发到负载服务上proxy_pass http://setServ;}注意&#…...

从功能测试进阶自动化测试,熬夜7天整理出这一份3000字超全学习指南

一、为什么要学习自动化测试&#xff1f; 如果在前两年&#xff0c;可能10个测试员有6个都是做的功能测试&#xff0c;但随着测试技术的发展以及测试工作的深入&#xff0c;传统的手工测试已经无法满足多模块的测试需求&#xff0c;所以为了提高测试效率和测试质量&#xff0c…...

[NOIP2011 提高组] 铺地毯

[NOIP2011 提高组] 铺地毯 题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯。一共有 n 张地毯&#xff0c;编号从 1 到 n。现在将这些地毯按照编号从小到大的顺序平行于…...

mac下ElasticSearch 集群搭建,使用Kibana配置和管理集群

Elasticsearch如果做集群的话Master节点至少三台服务器或者三个Master实例加入相同集群&#xff0c;三个Master节点最多只能故障一台Master节点&#xff0c;如果故障两个Master节点&#xff0c;Elasticsearch将无法组成集群.会报错&#xff0c;Kibana也无法启动&#xff0c;因为…...

【软件测试】自动化测试的追求,水土不服?看看资深测试咋说的......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 大部分测试初学者入…...

Mac mini 外接移动硬盘无法显示,磁盘工具装载报错显示 com apple diskmanagement disenter

使用“启动安全性实用工具”可确保 Mac 始终从您指定的启动磁盘以及合法的受信任操作系统启动。 如果您使用的是配备 Apple T2 安全芯片的 Mac&#xff0c;则“启动安全性实用工具”提供以下三项功能来帮助保护您的 Mac 免受未经授权的访问&#xff1a;固件密码保护、安全启动…...

【图像处理OpenCV(C++版)】——4.6 限制对比度的自适应直方图均衡化

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…...

设计模式--工厂模式

这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通过使用一个共同的接口来指向新创建的对象。   工厂模式主要使用了C的多态特性。将存在继承关系的类&a…...

算法笔记(十三)—— 树形DP及Morris遍历

树形DP&#xff1a; Question1: 以X为头结点的树&#xff0c;最大距离&#xff1a; 1. X不参与&#xff0c;在左子树上的最大距离 2. X不参与&#xff0c;在右子树上的最大距离 3. X参与&#xff0c;左树上最远的结点通过X到右树最远的结点 最后的结果一定是三种情况的最大…...

【Classical Network】EfficientNetV2

原文地址 原文代码 pytorch实现1 pytorch实现2 详细讲解 文章目录EfficientNet中存在的问题NAS 搜索EfficientNetV2 网络结构codeEfficientNet中存在的问题 训练图像尺寸大时&#xff0c;训练速度非常慢。train size 512, batch 24时&#xff0c;V100 out of memory在网络浅…...

索引类型FULLTEXT、NORMAL、SPATIAL、UNIQUE的区别

SQL索引的创建及使用请移步另一篇文章 (188条消息) SQL索引的创建及使用_sql索引的建立与使用_t梧桐树t的博客-CSDN博客 索引的种类 NORMAL 表示普通索引&#xff0c;大多数情况下都可以使用 UNIQUE 表示唯一索引&#xff0c;不允许重复的索引&#xff0c;如果该字段信息…...

稳定、可控、高可用:运维最应该加持哪些技术 buff?

如何保障开发需求高效交付&#xff0c;系统高峰扛得住、长期平稳&#xff0c;是项目组中的每位技术人必须面对的问题。 本文大纲 1、强稳定性Buff 2、风控服务实时性Buff 3、高资源利用率Buff 1.强稳定性Buff 强稳定性背后有三大挑战&#xff0c;其一是应对发布变更引起故障问…...

动态网站开发讲课笔记02:Java Web概述

文章目录零、本讲学习目标一、 XML基础&#xff08;一&#xff09;XML概述1、XML2、XML与HTML的比较&#xff08;二&#xff09;XML语法1、XML文档的声明2、XML元素的定义3、XML属性的定义4、XML注释的定义5、XML文件示例&#xff08;三&#xff09;DTD约束1、什么是XML约束2、…...

如何保护 IP 地址的隐私问题

是不是只有运营商才能查到某个人的住址信息呢&#xff1f;在大数据时代的今天&#xff0c;各种互联网应用收集了大量的数据信息&#xff0c;它们其实也可以根据这些信息&#xff0c;推断出某个人的大致地址位置。例如百度地图会一直用 App SDK 以及网页的方式记录 IP 和地址位置…...