每日5题Day4 - LeetCode 16 - 20

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

第一题:16. 最接近的三数之和 - 力扣(LeetCode)

class Solution {public int threeSumClosest(int[] nums, int target) {//别用dp了,使用双指针省空间一些,Arrays.sort(nums);//用变量代替数组长度int n = nums.length;//我们找到的和可能大于或者小于target,//最终返回结果是一个差值,初始化一个最大值吧int best = Integer.MAX_VALUE;//注意范围是n - 2,因为三个数之和for(int i = 0; i < n - 2; i++){//去重if(i > 0 && nums[i] == nums[i - 1]){continue;}//规定左右边界int j = i + 1, k = n - 1;//判断了while(j < k){int cursum = nums[i] + nums[j] + nums[k];if(cursum == target){//题目说只有一组满足要求,如果发现最后解可以直接返回了return target;}if(Math.abs(cursum - target) < Math.abs(best - target)){best = cursum;}else if(cursum > target){k--;}else{j++;}}}return best;}
}

第二题:17. 电话号码的字母组合 - 力扣(LeetCode)

class Solution {public List<String> letterCombinations(String digits) {//考虑特殊情况if(digits.equals("")){return new ArrayList<>();}//读题可以发现这个其实相当于一个dfs的题目,回溯一下char[] words = digits.toCharArray();//返回最后的结果List<String> res = new ArrayList<>();//存储的过程Deque<Character> path = new ArrayDeque<>();//因为存在映射Map<Character, List<Character>> map = new HashMap<>();map.put('2', Arrays.asList('a', 'b', 'c'));map.put('3', Arrays.asList('d', 'e', 'f'));map.put('4', Arrays.asList('g', 'h', 'i'));map.put('5', Arrays.asList('j', 'k', 'l'));map.put('6', Arrays.asList('m', 'n', 'o'));map.put('7', Arrays.asList('p', 'q', 'r', 's'));map.put('8', Arrays.asList('t', 'u', 'v'));map.put('9', Arrays.asList('w', 'x', 'y', 'z'));traversal(0, words, res, path, map);return res;}private static void traversal(int cur_idx, char[] words, List<String> res, Deque<Character> path, Map<Character, List<Character>> map){//所有数字都遍历了,可以添加结果了if(cur_idx == words.length){StringBuilder sb = new StringBuilder();for(char ch : path){sb.append(ch);}res.add(sb.toString());return;}//每次添加字母进去的过程for(char ch : map.get(words[cur_idx])){path.offerLast(ch);traversal(cur_idx + 1, words, res, path, map);path.pollLast();}}
}

第三题:18. 四数之和 - 力扣(LeetCode)

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> result = new ArrayList<>();Arrays.sort(nums);  for (int i = 0; i < nums.length - 3; i++) {if (nums[i] > 0 && nums[i] > target) {return result;}if (i > 0 && nums[i - 1] == nums[i]) {    // 对nums[i]去重continue;}for (int j = i + 1; j < nums.length - 2; j++) {if (j > i + 1 && nums[j - 1] == nums[j]) {  // 对nums[j]去重continue;}int left = j + 1;int right = nums.length - 1;while (right > left) {long sum = (long) nums[i] + nums[j] + nums[left] + nums[right];if (sum > target) {right--;} else if (sum < target) {left++;} else {result.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));while (right > left && nums[right] == nums[right - 1]) right--;while (right > left && nums[left] == nums[left + 1]) left++;left++;right--;}}}}return result;}
}

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

/*** 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) {//搞一个头节点ListNode dummy = new ListNode(-1, head);ListNode cur = dummy;//找到要删除的点while(n > 0){cur = cur.next;n--;}ListNode pre = dummy;//从头找到要删除点的前一个点while(cur.next != null){pre = pre.next;cur = cur.next;}//跳过要删除的点直接连接pre.next = pre.next.next;return dummy.next;}
}

 第五题:20. 有效的括号 - 力扣(LeetCode)

class Solution {public boolean isValid(String s) {//用hashmap来存一下相匹配的括号Map<Character, Character> map = new HashMap<>();map.put('}', '{');map.put(')', '(');map.put(']', '[');Deque<Character> deque = new ArrayDeque<>();//遍历放入,是左括号就放入栈,右括号就弹出看是否匹配for(char ch : s.toCharArray()){if(!map.containsKey(ch)){deque.offerLast(ch);}else{if(map.get(ch) == deque.peekLast()){deque.pollLast();}else{return false;}}}//记得判断栈是否为空,不然就还有左括号,消除不完return deque.size() == 0;}
}

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

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

相关文章

docker-compose Install homer

homer前言 一个非常简单的静态主页,为您的服务器保持您的服务在手,从一个简单的yaml配置文件。 前提要求 安装 docker docker-compose 参考创建一键安装homer 脚本 homer安装位置/homerhomer 脚本位置/homer/assetshomer logo 图标/home/assets/iconshomer 端口80homer 颜色…

MySQL5个查询

# 总查询 EXPLAIN SELECT * FROM city; # 范围查询 EXPLAIN SELECT * from city where ID>5 and ID<20; #主键查询 EXPLAIN SELECT * from city where ID5; # 索引查询 EXPLAIN SELECT * from city where CountryCodeNLD; # 普通索引 EXPLAIn SELECT * from cit…

工业交换机的好处有哪些?

工业交换机是现代工业网络中不可或缺的重要组成部分&#xff0c;它扮演着连接和管理各种网络设备的关键角色。工业交换机的优点不言而喻&#xff0c;首先是其稳定可靠的性能&#xff0c;能够支撑工业环境下的高负荷工作。无论是在恶劣的温度、湿度或电磁干扰的环境下&#xff0…

springboot2.x3.x的A项目(作为sdk)集成到启动B项目调用2

一 概述 1.1 说明 本博客记录的案例&#xff0c;逻辑是&#xff1a; 项目A读取配置文件&#xff0c;并在service类的方法进行打印输出。项目A作为sdk被项目B进行依赖&#xff0c; 在项目B启动后&#xff0c;进行调用&#xff0c;并且在B进行参数的配置&#xff0c;能够覆盖…

stm32常用编写C语言基础知识,条件编译,结构体等

位操作 宏定义#define 带参数的宏定义 条件编译 下面是头文件中常见的编译语句&#xff0c;其中_LED_H可以认为是一个编译段的名字。 下面代码表示满足某个条件&#xff0c;进行包含头文件的编译&#xff0c;SYSTEM_SUPPORT_OS可能是条件&#xff0c;当非0时&#xff0c;可以…

路由引入实验(华为)

思科设备参考&#xff1a;路由引入实验&#xff08;思科&#xff09; 技术简介 路由引入技术在网络通信中起着重要的作用&#xff0c;能够实现不同路由协议之间的路由传递&#xff0c;并在路由引入时部署路由控制&#xff0c;实现路径或策略的控制 实验目的 不同的路由协议之…

工大智信智能听诊器:开启个人健康管理的全新模式

工大智信智能听诊器&#xff1a;开启个人健康管理的全新模式 在快节奏的现代生活中&#xff0c;健康管理已成为人们关注的焦点。工大智信智能听诊器&#xff0c;作为一款创新的医疗设备&#xff0c;不仅提供高级数据管理功能&#xff0c;而且成为了个人健康管理的得力助手。 这…

【FreeRTOS移植到STM32F103C8T6超详细教程-->>>基于标准库】

移植教程 FreeRTOS简介FreeRTOS 介绍FreeRTOS优点 FreeRTOS移植FreeRTOS 下载FreeRTOS目录结构移植开始Keil5打开工程修改FreeRTOSConfig.h文件修改stm32f10x_it.c 测试FreeRTOS闪烁第一颗小灯 FreeRTOS简介 FreeRTOS 介绍 FreeRTOS 是市场领先的面向微控制器和小型微处理器的…

Flutter Text导致A RenderFlex overflowed by xxx pixels on the right.

使用Row用来展示两个Text的时候页面出现如下异常,提示"A RenderFlex overflowed by xxx pixels on the right." The following assertion was thrown during layout: A RenderFlex overflowed by 4.8 pixels on the right.The relevant error-causing widget was:…

如何排查hpet导致的CPU高负载——《OceanBase诊断系列》之十

1. 前言 我在OceanBase问答社区协助用户排查了一个CPU占用率过高的问题&#xff0c;帖子原文是&#xff1a; 《刚刚新安装的OceanBase集群&#xff0c;没有任何数据&#xff0c;CPU占用非常高&#xff0c;这正常吗&#xff1f;》。从这个场景出发&#xff0c;来分享相关的诊断…

【Python自动化测试】:Unittest单元测试与HTMLTestRunner自动生成测试用例的好帮手

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;unittest编写测试用例&#x1f680;unittest测…

智慧医疗时代:探索互联网医院开发的新篇章

在智慧医疗时代&#xff0c;互联网医院开发正引领着医疗服务的创新浪潮。通过将先进的技术与医疗服务相结合&#xff0c;互联网医院为患者和医生提供了全新的互动方式&#xff0c;极大地提升了医疗服务的便捷性和效率。本文将深入探讨互联网医院的开发&#xff0c;介绍其技术实…

巧秒用AI写作工具做影视解说文案,效率高!

在自媒体内容输出的快节奏当下&#xff0c;影视解说已经成为一种受欢迎的内容形式。然而&#xff0c;创作高质量的影视解说文案往往需要花费大量的时间和精力。随着人工智能技术的不断发展&#xff0c;AI写作工具为我们提供了一种全新的、高效的解决方案。 AI写作工具利用先进的…

电商API接口接入电商平台实现品牌价格、销量、评论数据监控

电商数据接口API在现代电商运营中扮演着至关重要的角色。它不仅能够实现品牌价格、销量、评论数据的监控&#xff0c;还能帮助商家优化销售策略&#xff0c;提升业务效率。下面将详细探讨如何通过接入电商平台的API接口来实现这些功能&#xff1a; 选择适合的电商平台 主流平台…

思科模拟器--06.单臂路由升级版--多端路由互连实验--24.5.20

实验图纸如下: 第0步: 先放置六台个人电脑,一台交换机和一台2911路由器(千兆路由器(G0开头的)) 接着,用直通线将 PC0的F0,PC1的F0分别和交换机的F0/0, F0/1连接 交换机的F0/3和路由器的G0/0连接 PC2的F0,PC3的F0分别和交换机的F0/4, F0/5连接 交换机的F0/6和路由器的G0/1…

【杂七杂八】Huawei Gt runner手表系统降级

文章目录 Step1&#xff1a;下载安装修改版华为运动与健康Step2&#xff1a;在APP里进行配置Step3&#xff1a;更新固件(时间会很长) 目前在使用用鸿蒙4 111版本的手表系统&#xff0c;但是感觉睡眠检测和运动心率检测一言难尽&#xff0c;于是想到是否能回退到以前的版本&…

Elasticsearch 分析器的高级用法二(停用词,拼音搜索)

Elasticsearch 分析器的高级用法二&#xff08;停用词&#xff0c;拼音搜索&#xff09; 停用词简介停用词分词过滤器自定义停用词分词过滤器内置分析器的停用词过滤器注意&#xff0c;有一个细节 拼音搜索安装使用相关配置 停用词 简介 停用词是指&#xff0c;在被分词后的词…

Qt案例练习(有源码)

项目源码和资源&#xff1a;Qt案例练习: qt各种小案例练习,有完整资源和完整代码 1.案例1 项目需求&#xff1a;中间为文本框&#xff0c;当点击上面的复选框和单选按钮时&#xff0c;文本框内的文本会进行相应的变化。 代码如下&#xff1a; #include "dialog.h" …

Git提交和配置命令

一、提交代码到仓库 在软件开发中&#xff0c;版本控制是一个至关重要的环节。而Git作为目前最流行的版本控制系统之一&#xff0c;为我们提供了便捷高效的代码管理和协作工具。在日常开发中&#xff0c;我们经常需要将本地代码提交到远程仓库&#xff0c;以便于团队协作和版本…

AI大模型的口语练习APP

开发一个使用第三方大模型的口语练习APP涉及多个步骤&#xff0c;从需求分析到部署上线。以下是详细的开发流程和关键步骤&#xff0c;通过系统化的流程和合适的技术选型&#xff0c;可以有效地开发出一个功能丰富、用户体验良好的口语练习APP。北京木奇移动技术有限公司&#…