每日一念
改掉自己想到哪写哪的坏习惯

子串

和为K的子数组

class Solution {/**有点像找出和为0的子数组,只不过这里和变成了k不太对,尝试使用双指针+滑动窗口,完全过不去样例正确做法hashmap存放 sum -- count对nums中的数字进行遍历sum累加sum[j] - sum[i] = k,则表示此时存在一个范围i - j使得和为k*/public int subarraySum(int[] nums, int k) {HashMap<Integer, Integer> map = new HashMap();map.put(0, 1);int sum = 0;int count = 0;for(int num: nums) {sum += num;if(map.containsKey(sum - k)) {count += map.get(sum - k);}map.put(sum, map.getOrDefault(sum, 0) + 1);}return count;}
}

滑动窗口的最大值

class Solution {/**这题总该是双指针+滑动窗口了吧还是不对。。超时LinkedList创建双端队列queue控制后面的元素加进队尾如果新元素大于队中所有元素弹出所有元素,加入新元素(确保队首元素始终是最大值)控制长度 > k 弹出队首元素只要i >= k - 1,每次都记录res[i] = 队首*/public int[] maxSlidingWindow(int[] nums, int k) {int[] res = new int[nums.length - k + 1];if(nums == null || nums.length == 0) {return res;}LinkedList<Integer> dequeue = new LinkedList();for(int i = 0; i < nums.length; i++) {while(!dequeue.isEmpty() && nums[i] > nums[dequeue.peekLast()]) {dequeue.pollLast();}dequeue.offerLast(i);if(i - dequeue.peekFirst() + 1 > k) {dequeue.pollFirst();}if(i - k + 1 >= 0) {res[i - k + 1] = nums[dequeue.peekFirst()];}}return res; }
}

最小覆盖子串

// 困难题,真是头皮发麻

普通数组

最大子数组

class Solution {/**dp[i]表示以nums[i]结尾的最大和的连续子数组dp[i] -- dp[i - 1](nums[i - 1]结尾的)*/public int maxSubArray(int[] nums) {int[] dp = new int[nums.length];dp[0] = nums[0];for(int i = 1; i < dp.length; i++) {dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);}int max = dp[0];for(int i = 0; i < dp.length; i++) {if(dp[i] > max) {max = dp[i];}}return max;}
}

合并区间

class Solution {/**start, end表示要存入的合并的区间起点&终点初始化为intervals[0] intervals[1]遍历intervals数组进行比较合并(intervals数组首先要对intervals[i][0]进行排序)*/public int[][] merge(int[][] intervals) {// Arrays.sort(intervals, new Comparator<int[]>(){//     public int compare(int[] a, int[] b) {//         return Integer.compare(a[0], b[0]);//     }// });// Arrays.sort(intervals, (a, b) -> {//     return Integer.compare(a[0], b[0]);// });for(int i = 0; i < intervals.length - 1; i++) {for(int j = 0; j < intervals.length - 1 - i; j++) {if(intervals[j][0] > intervals[j + 1][0]) {int[] temp = intervals[j];intervals[j] = intervals[j + 1];intervals[j + 1] = temp;}}}// for(int i = 0; i < intervals.length; i++) {//     System.out.println("interval数组的值" + intervals[i][0] + intervals[i][1]);// }List<List<Integer>> res = new ArrayList();int start = intervals[0][0];int end = intervals[0][1];for(int i = 1; i < intervals.length; i++) {// i = 1的【i】【0】比i = 0大,进行合并if(intervals[i][0] <= end) {end = Math.max(end, intervals[i][1]);}else {List<Integer> path = new ArrayList();path.add(start);path.add(end);res.add(path);start = intervals[i][0];end = intervals[i][1];}}List<Integer> path = new ArrayList();path.add(start);path.add(end);res.add(path);// System.out.println(res.size());int[][] ans = new int[res.size()][2];for(int i = 0; i < res.size(); i++) {ans[i][0] = res.get(i).get(0);ans[i][1] = res.get(i).get(1);}return ans;}
}

轮转数组

class Solution {/**循环从队尾拿然后插入队头使用双端队列linkedlist然后发现函数返回void,说明应该要直接在nums基础上改动*/public void rotate(int[] nums, int k) {int len = nums.length;int[] nums1 = new int[len];for(int i = 0; i < len; i++) {nums1[i] = nums[i];}for(int i = 0; i < len; i++) {nums[(i + k)% len] = nums1[i];}}
}

除自身以外数组的乘积

// 双端队列,超时

缺失的第一个正数

class Solution {/**again双端队列?不要思维定势啊喂首先将nums中所有<0 & >n+1的全部设置为不可达的值n+1用res存有效的值 i -- i + 1遍历,第一个i != i + 1,返回都满足,则返回n + 1*/public int firstMissingPositive(int[] nums) {int n = nums.length;int[] res = new int[nums.length];for(int i = 0; i < nums.length; i++) {if(nums[i] <= 0 || nums[i] > n) {nums[i] = n + 1;}}for(int i = 0; i < n; i++) {if(nums[i] != n + 1) {res[nums[i] - 1] = nums[i]; }}for(int i = 0; i < res.length; i++) {// System.out.print("第" + i + "个数为" + res[i]);if(res[i] != i + 1) {return i + 1;}}return n + 1;}
}

矩阵

矩阵置0

class Solution {/**(i, j)处元素值为0,第i行和第j列全部置0*/public void setZeroes(int[][] matrix) {int row = matrix.length;int col = matrix[0].length;List<int[]> res = new ArrayList();for(int i = 0; i < row; i++) {for(int j = 0; j < col; j++) {if(matrix[i][j] == 0) {res.add(new int[]{i, j});}}}for(int i = 0; i < res.size(); i++) {int[] result = res.get(i);for(int m = 0; m < col; m++) {matrix[result[0]][m] = 0;}for(int k = 0; k < row; k++) {matrix[k][result[1]] = 0;}}}
}

螺旋矩阵

class Solution {/**没有技巧,全是感情*/public List<Integer> spiralOrder(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;int upper = 0, lower = m - 1;int left = 0, right = n - 1;List<Integer> res = new ArrayList();while(res.size() < m * n) {// 从左往右,upper++if(upper <= lower) {for(int j = left; j <= right; j++) {res.add(matrix[upper][j]);}upper++;}// 从上往下,right--if(right >= left) {for(int i = upper; i <= lower; i++) {res.add(matrix[i][right]);}right--;}// 从右往左,lower--if(lower >= upper) {for(int j = right; j >= left; j--) {res.add(matrix[lower][j]);}lower--;}// 从下网上, left++if(left <= right) {for(int i = lower; i >= upper; i--) {res.add(matrix[i][left]);}left++;}}return res;}
}

旋转图像

class Solution {/**把原来的矩阵按对角线翻转,再每一行逆序对角线是从左上到右下的线*/public void rotate(int[][] matrix) {int row = matrix.length;int col = matrix[0].length;// 转置需要注意,只遍历下三角for(int i = 0; i < row; i++) {for(int j = 0; j < i; j++) {int tmp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = tmp;}}// for(int i = 0; i < row; i++) {//     for(int j = 0; j < col; j++) {//         System.out.print(matrix[i][j]);//     }// }for(int i = 0; i < row; i++) {reverse(matrix[i]);}}public void reverse(int[] nums) {int left = 0;int right = nums.length - 1;while(left < right) {int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;left++;right--;}}
}

搜索二维矩阵II

class Solution {/**不知道为什么联想到dp数组,比较dp[i][j]和dp[i - 1][j], dp[i][j - 1]*/public boolean searchMatrix(int[][] matrix, int target) {int row = matrix.length;int col = matrix[0].length;int j = col - 1;int i = 0;while(j >= 0 && i < row) {if(matrix[i][j] < target) {i++;}else if(matrix[i][j] > target) {j--;}else {return true;}}return false;}
}

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

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

相关文章

C#与物联网:打造智能家居解决方案

引言 随着物联网&#xff08;IoT&#xff09;的快速发展&#xff0c;智能家居成为了现代生活的一个重要组成部分。智能家居系统通过连接各种智能设备&#xff0c;如智能灯光、恒温器、安防摄像头等&#xff0c;实现家居环境的自动化和智能化控制。C#作为一种强大的编程语言&am…

Linux C++ 045-设计模式之工厂模式

Linux C 045-设计模式之工厂模式 本节关键字&#xff1a;Linux、C、设计模式、简单工厂模式、工厂方法模式、抽象工厂模式 相关库函数&#xff1a; 简单工厂模式 基本简介 从设计模式的类型上来说&#xff0c;简单工厂模式是属于创建型模式&#xff0c;又叫做静态工厂方法&…

10、Python之写出更加Pythonic的代码:unpacking拆包机制

引言 有些小伙伴有其他编程语言的学习、使用的经验&#xff0c;然后迁移到Python。一般会比完全的新手小白&#xff0c;更快速地把Python用起来。这是他们的优势&#xff0c;但也是他们的劣势。 之所以这么说&#xff0c;是因为从其他编程语言带过来的&#xff0c;除了相通的编…

MOJO语言中的字典和哈希表:数据结构的灵活性与效率

MOJO是一种编程语言&#xff0c;它以其独特的语法和对现代编程范式的支持而闻名。在MOJO中&#xff0c;字典&#xff08;也称为哈希表或散列表&#xff09;是一种非常重要的数据结构&#xff0c;它允许开发者以键值对的形式存储和检索数据。本文将深入探讨MOJO语言中的字典和哈…

第十八节 LLaVA如何按需构建LORA训练(视觉、语言、映射多个组合训练)

文章目录 前言一、基于llava源码构建新的参数1、添加lora_vit参数2、训练命令脚本设置二、修改源码,构建lora训练1、修改源码-lora训练2、LLM模型lora加载3、VIT模型加载4、权重冻结操作5、结果显示三、实验结果前言 如果看了我前面文章,想必你基本对整个代码有了更深认识。…

Raylib 实现超大地图放大缩小与两种模式瓦片地图刷新

原理&#xff1a; 一种刷新模式&#xff1a; 在宫格内整体刷新&#xff0c;类似九宫格移动到边缘&#xff0c;则九宫格整体平移一个宫格&#xff0c;不过这里是移动一个瓦片像素&#xff0c;实际上就是全屏刷新&#xff0c;这个上限是 笔记本 3060 70帧 100*100个瓦片每帧都…

数据库之MQL

1&#xff0c;查询所有 mysql> select * from grade;2&#xff0c; mysql> select id,firstname,lastname from grade;3&#xff0c; mysql> select firstname,lastname from grade where id > 4;4&#xff0c; mysql> select * from grade where sex f;5&…

C++中的函数指针

C中的函数指针 在C中&#xff0c;函数指针是一个指向函数的指针&#xff0c;可以用来调用函数。函数指针的声明方式如下&#xff1a; 返回类型 (*指针变量名)(参数列表);例如&#xff0c;如果有一个函数&#xff1a; int add(int a, int b) {return a b; }可以声明一个指向…

微服务通信新纪元:Eureka与分布式服务网格的融合

微服务通信新纪元&#xff1a;Eureka与分布式服务网格的融合 引言 在微服务架构中&#xff0c;服务间的通信是构建分布式系统的核心。Eureka作为Netflix开源的服务发现框架&#xff0c;提供了服务注册与发现的功能&#xff0c;而服务网格技术则为服务间通信提供了更细粒度的控…

Hive/Spark窗口函数

窗口函数 hive文档链接 spark文档链接 1. OVER支持的函数 自然序编号 Syntax: ROW_NUMBER按等级编号 Syntax: RANK | DENSE_RANK | PERCENT_RANK分组内分桶&#xff0c;并返回对应桶的序号 Syntax: NTILE(n)Analytic Functions&#xff08;分析函数&#xff09; Syntax: CUM…

odoo17 常见升级问题

通用问题 模型名变更 字段变更 方法名变更 方法参数变更 xml数据结构定义变化 xml的id变更 view视图变化&#xff0c;导致xpath路径出差 template结构变化&#xff0c;&#xff0c;导致xpath路径出差&#xff0c;或者id不存在 升16问题 前端owl的架构变化 升17问题 前端 标…

什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇)

前言 在记忆里上次绕安全狗还是在上次&#xff0c;开开心心把自己之前绕过狗的payload拿出来&#xff0c;发现全部被拦截了&#xff0c;事情一下子就严肃起来了&#xff0c;这就开整。 环境 本次环境如下sqli-lab的sql注入靶场 网站安全狗APACHE版V4.0版本的最高防护等级绕过…

秋招Java后端开发冲刺——并发篇2(ThreadLocal、Future接口)

本文对ThreadLocal类和Future接口进行了总结概括&#xff0c;包括ThreadLocal类的原理、内存泄露等问题&#xff0c;和Future接口的使用等问题。 一、ThreadLocal 1. 介绍 ThreadLocal&#xff08;线程局部变量&#xff09;是Java中的一个类&#xff0c;线程通过维护一个本地…

一文带你彻底搞懂什么是责任链模式!!

文章目录 什么是责任链模式&#xff1f;详细示例SpingMVC 中的责任链模式使用总结 什么是责任链模式&#xff1f; 在我们日常生活中&#xff0c;经常会出现一种场景&#xff1a;一个请求需要经过多个对象的处理才能得到最终的结果。比如&#xff0c;一个请假申请&#xff0c;需…

STM32智能仓库管理系统教程

目录 引言环境准备智能仓库管理系统基础代码实现&#xff1a;实现智能仓库管理系统 4.1 数据采集模块 4.2 数据处理与控制算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;仓库管理与优化问题解决方案与优化收尾与总结 1. 引言 智能仓库管理系统通…

藏汉翻译通作为翻译软件的优势有哪些?

藏汉翻译通作为一款专业的藏汉双语翻译软件&#xff0c;具有以下优势&#xff1a; 人工智能技术应用&#xff1a;藏汉翻译通利用了人工智能翻译和语音识别合成技术&#xff0c;提供智能藏文翻译服务。 高准确率&#xff1a;文字识别准确率可达90%&#xff0c;语音识别转化文字…

苍穹外卖--导入分类模块功能代码

把各层代码拷贝到所需文件夹下&#xff0c; 进行编译 在运行 提交和推送仓库

解锁AI大模型潜能:预训练、迁移学习与中间件编程的协同艺术

在人工智能的浩瀚星空中&#xff0c;大型预训练模型&#xff08;Large Language Models, LLMs&#xff09;犹如璀璨的星辰&#xff0c;引领着技术革新的浪潮。这些模型通过海量数据的滋养&#xff0c;学会了理解语言、生成文本乃至执行复杂任务的能力。然而&#xff0c;要让这些…

【正点原子i.MX93开发板试用连载体验】项目计划和开箱体验

本文最早发表于电子发烧友&#xff1a;【   】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)https://bbs.elecfans.com/jishu_2438354_1_1.html 有一段时间没有参加电子发…

Pyspider WebUI 未授权访问致远程代码执行漏洞复现

0x01 产品简介 Pyspider是由国人binux编写的强大的网络爬虫系统,它带有强大的WebUI(Web用户界面),为用户提供了可视化的编写、调试和管理爬虫的能力。这一特点使得Pyspider在爬虫框架中脱颖而出,尤其适合那些希望快速上手并高效开发爬虫的用户。允许用户直接在网页上编写…