力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)
力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)
文章目录
- 力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)
- 一、24. 两两交换链表中的节点
- 二、139. 单词拆分
- 三、560. 和为 K 的子数组
- 四、209. 长度最小的子数组
- 五、153. 寻找旋转排序数组中的最小值
一、24. 两两交换链表中的节点
题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/description/
思路:要求把相邻的节点两两交换,不能只交换值,其实对于这种交换类型的题目很简单,只需要维护3个或者4个指针,指针①维护要交换的两个节点的前一个节点,这个属于前驱节点,避免断线了,指针②指向第一个要交换的节点,指针③指向第二个要交换的节点,指针②和指针③负责交换节点,指针④用来记录后继节点,所以思路就清晰了,只需要②③节点进行交换,①④维护两个端点,每交换完一组后,指针向后移动就行。
class Solution {public ListNode swapPairs(ListNode head) {if(head == null || head.next == null) return head;ListNode root = new ListNode(-1, head);ListNode pro = root, cur = head, pre = null;while(cur != null && cur.next != null) {pre = cur.next.next;pro.next = cur.next;cur.next.next = cur;cur.next = pre;pro = cur;cur = pre;}return root.next;}
}
二、139. 单词拆分
题目链接:https://leetcode.cn/problems/word-break/description/
思路:单词拆分,问一个单词字典能否拼成一个字符串,要求单词可以不全使用,单个单词可以重复使用,从这几点可以看出,本题是一个完全背包问题,问的就是能不能把背包装满,对于完全背包,在不求排列数和组合数的情况下,物品和背包不讲究向后遍历顺序,而且都是正序,那么定义dp[i]表示以s[0, i]区间的字符串可以被拼接成功,那么就可以找到递推规律,只要在前一个位置可以拼成,然后比较后面的区间,如果相同即可拼成。
class Solution {public boolean wordBreak(String s, List<String> wordDict) {boolean[] dp = new boolean[s.length()+1];dp[0] = true;for(int i = 0; i < s.length(); i++) {for(String t : wordDict) {int k = t.length();if(k > i+1 || dp[i+1] || !dp[i+1-k]) continue;if(isEquals(s, t, i+1-k, i)) {dp[i+1] = true;}}}return dp[s.length()];}boolean isEquals(String s, String t, int left, int right) {int i = 0;while(left <= right && i < t.length()) {if(s.charAt(left) != t.charAt(i)) return false;left++;i++;}return true;}}
三、560. 和为 K 的子数组
题目链接:https://leetcode.cn/problems/subarray-sum-equals-k/
思路:本题要求求和为K的子数组,要求子数组连续,其实如果子数组不连续让求子序列,直接回溯就可以做。但是现在子数组连续,这种情况下可以考虑前缀和,遍历数组的过程中用map记录前缀和出现的次数,然后对于每一个前缀和都尝试去减k,看看对应的前缀和是否存在,如果存在,则说明一定有和为k的子数组,与上一个前缀和相加,得到当前的前缀和。此时计数即可。
class Solution {public int subarraySum(int[] nums, int k) {Map<Integer, Integer> map = new HashMap<>();map.put(0, 1);int count = 0, preSum = 0;for(int i = 0; i < nums.length; i++) {preSum += nums[i];if(map.containsKey(preSum-k)) {count += map.get(preSum-k);}map.put(preSum, map.getOrDefault(preSum, 0)+1);}return count;}
}
四、209. 长度最小的子数组
题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/description/
思路:求和为k的长度最小的子数组,这种类型一看就是滑动窗口,不停的扩大右边界,直到出发条件,然后记录长度,然后缩小左边界,直到不再满足条件,然后再重新扩大右边界。
class Solution {public int minSubArrayLen(int target, int[] nums) {int left = 0, right = 0, sum = 0, min = Integer.MAX_VALUE;while(right < nums.length) {sum += nums[right++];while(sum >= target) {min = Math.min(min, right - left);sum -= nums[left++];}}return min == Integer.MAX_VALUE ? 0 : min;}
}
五、153. 寻找旋转排序数组中的最小值
题目链接:https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/description/
思路:本题说的是数组旋转若干次之后求数组中的最小值,因为原数组是升序的且无重,无论旋转多少次,最后数组只能是两种形态,要么单调递增,要么分段递增,那么就很简单,先排除第一种,如果右边界的值大于左边界就可以说明是单调递增的,那么剩下的就都是分段递增了,对于分段递增,采用二分法,如果二分之后的中值大于nums[0]说明中值位于左分段,最小值在右区间,如果二分之后的中值小于nums[0]则说明最小值位于左区间。然后以此往复一直寻找就可以。

class Solution {public int findMin(int[] nums) {int len = nums.length;if(nums[len-1] >= nums[0]) return nums[0];int left = 0, right = len - 1;while(left <= right) {int mid = left + (right - left) / 2;if(nums[mid] < nums[0]) {right = mid-1;}else{left = mid+1;}}return nums[left];}
}
相关文章:
力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)
力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组) 文章目录 力扣爆刷第166天之TOP100五连刷96-100(单词拆分、回溯、旋转数组)一、24. 两两交换链表中的节点二、139. 单词拆分三、560. 和为 K 的子数组四、209. 长…...
2024在线PHP加密网站源码
源码介绍 2024在线PHP加密网站源码 更新内容: 1.加强算法强度 2.优化模版UI 加密后的代码示例截图 源码下载 https://download.csdn.net/download/huayula/89568335...
网络驱动移植(RTL8189)
1、把驱动放到内核文件夹中(linux/drivers/net/wireless),对应的驱动可以在网上下载 2、修改该目录下的Kconfig和Makefile文件 3、配置内核(make menuconfig) 配置支持IEEE 802.11,选中8189模块࿰…...
go语言中map学习
在 Go 语言中,map 是一种引用类型,这意味着它有以下特点: 内存结构: map 实际上是一个指向底层数据结构的指针。这个底层数据结构包含键值对的集合。 赋值与传参: 当你给一个变量赋值一个 map 时,或者将 map 作为函数参数传递时,实际上传递的是指针,而不是完整的数据结构副本。…...
【C#】| 与 及其相关例子
按位或(|) 按位或运算符 | 对两个数的每一位进行比较,如果两个数中至少有一个为 1,则结果位为 1;否则,结果位为0。 1010 (10 in decimal) | 1100 (12 in decimal) ------1110 (14 in decimal) 力扣相关…...
【数据结构 | 哈希表】一文了解哈希表(散列表)
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
go创建对象数组
在 Go 语言中,可以使用字面量的方式创建结构体对象数组。以下是一个示例代码,展示了如何使用字面量创建一个结构体对象数组: package mainimport "fmt"// 定义一个结构体 type Person struct {Name stringAge intAddress Address…...
Golang | Leetcode Golang题解之第278题第一个错误的版本
题目: 题解: func firstBadVersion(n int) int {return sort.Search(n, func(version int) bool { return isBadVersion(version) }) }...
自动化网络爬虫:如何它成为提升数据收集效率的终极武器?
摘要 本文深入探讨了自动化网络爬虫技术如何彻底改变数据收集领域的游戏规则,揭示其作为提升工作效率的终极工具的奥秘。通过分析其工作原理、优势及实际应用案例,我们向读者展示了如何利用这一强大工具加速业务决策过程,同时保持数据收集的…...
软件测试---测试需求分析
课程目标 什么是软件测试需求 软件测试需求的必要性 如何对软件测试需求进行分析(重点) 课程补充 灰度测试(基于功能):先发布部分功能,然后看用户的反馈,再去发布另外一部分的功能更新。 A/B测…...
Android11 framework 禁止三方应用通过广播开机自启动-独立方案
之前的文章Android11 framework 禁止三方应用开机自启动记录了我调试Android11应用自启动限制的全过程,但是之前的方案感觉还能再研究,所以有了这一篇文章。 这一篇文章主要探讨Android11上,以广播来进行自启动的应用的限制,极个别…...
Node:解决Error: error:0308010C:digital envelope routines::unsupported的解决方法
问题描述 在使用vuepress搭建博客的时候,运行项目发现报错了,检查了node的版本是18,之前用的是16或14的版本,现在报:Error: error:0308010C:digital envelope routines::unsupported错误。 查找了一些资料࿰…...
spring boot(学习笔记第十四课)
spring boot(学习笔记第十四课) Spring Security的密码加密,基于数据库认证 学习内容: Spring Security的密码加密基于数据库认证 1. Spring Security的密码加密 如果用户的密码保存在数据库中是以明文保存,对于公司的安全将是灾难性的&…...
Android 11 Unable to start/bind service
今天在Android11上发现了一个的问题,如果目标Service的进程没有启动,那么无论是bindService还是startService都没有办法拉起指定的Service。 网上查了很多资料如下: 1.目标Service 设置 android:exported"true" 2.目标Service需要声明自定义权…...
走难而正确的路并持之以恒
走难而正确的路并持之以恒 接近八月,台风频繁。气象台说台风“格美”今夜将至,往粤北走,而留在粤东的将是持续的高温。高温的广州,这几晚的天空惊喜不断,成片的火烧云,站在猎德大桥观望,丹红的凤…...
规范:Redis规范
在公司项目中,redis属于高频使用,在使用中,我们遇到了各种各样的redis问题,于是针对自身情况梳理了一个redis使用规范。 一、键名设计 1、key名设计 1. 禁止包含特殊字符(比如空格、换行、单双引号以及其他转义字符) 2. 建议以…...
比较 WordPress 、 Baklib 和 BetterDocs
对于希望管理其产品和服务的在线文档或知识库以支持其客户和员工的组织来说,市场上有太多的平台和工具。一些组织使用 WordPress 作为 Web 内容管理,并打算使用可用的插件。如果您是这样的组织之一,正在考虑使用广泛使用的 WordPress 插件之一…...
Redis 哨兵搭建
Redis哨兵(sentinel)搭建 7.2.5 文章目录 一、单节点哨兵1. 环境介绍2. 环境前准备工作3. 安装 Redis 7.2.54. redis 配置修改并且启动4.1 修改配置文件4.2 编写启动脚本 5. 开启主从5.1 开启5.2 主库实例查看主从信息 6. 创建sentinel的配置文件并启动6.1 创建配置文件6.2 启…...
HackTheBox--Knife
Knife 测试过程 1 信息收集 端口扫描 80端口测试 echo "10.129.63.56 knife.htb" | sudo tee -a /etc/hosts网站是纯静态的,无任何交互功能,检查网页源代码也未发现任何可利用的文件。 检查页面请求时,请求与响应内容࿰…...
Linux_实现TCP网络通信
目录 1、实现服务器的逻辑 1.1 socket 1.2 bind 1.3 listen 1.4 accept 1.5 read 1.6 write 1.7 服务器代码 2、实现客户端的逻辑 2.1 connect 2.3 客户端代码 3、实现服务器与客户端的通信 结语 前言: 在Linux下,实现传输层协议为TCP…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
