力扣hot100刷题记录

二刷hot100,坚持每天打卡!!!Today:2023-8-10

1. 两数之和

在这里插入图片描述

// 先求差,再查哈希表
public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> map = new HashMap<>();for(int i = 0;i<nums.length;i++){int key = target - nums[i];if(map.containsKey(key)){return new int[]{map.get(key),i};}map.put(nums[i],i);}return new int[0];
}

2. 两数相加

在这里插入图片描述

	// 对应位置相加,记录进位,然后链表尾插法即可public ListNode addTwoNumbers(ListNode l1, ListNode l2) {int flag = 0,lv1,lv2;ListNode answer = null,target = null;while (l1 != null || l2 != null){lv1 = l1 == null ? 0:l1.val;lv2 = l2 == null ? 0:l2.val;l1 = l1 == null ? null:l1.next;l2 = l2 == null ? null:l2.next;int sum = lv1+lv2+flag;flag = sum / 10;ListNode listNode = new ListNode(sum % 10);if (target == null){target = listNode;answer = target;}else {target.next = listNode;target = target.next;}}if (flag >0){target.next = new ListNode(flag);}return answer;}

3. 无重复字符的最长字串

在这里插入图片描述

	// 滑动窗口public int lengthOfLongestSubstring(String s){Set<Character> set = new HashSet<>();int start = 0,end = 0,answer=0;while (end < s.length()){if (set.contains(s.charAt(end))){set.remove(s.charAt(start++));}else {set.add(s.charAt(end++));answer = Math.max(answer,end - start);}}return answer;}

4. 最长回文子串

在这里插入图片描述

 // 动态规划public String longestPalindrome(String s) {if (s == null || s.length() < 2) {return s;}int strLen = s.length();int maxStart = 0;  //最长回文串的起点int maxEnd = 0;    //最长回文串的终点int maxLen = 1;  //最长回文串的长度boolean[][] dp = new boolean[strLen][strLen];for (int r = 1; r < strLen; r++) {for (int l = 0; l < r; l++) {if (s.charAt(l) == s.charAt(r) && (r - l <= 2 || dp[l + 1][r - 1])) {dp[l][r] = true;if (r - l + 1 > maxLen) {maxLen = r - l + 1;maxStart = l;maxEnd = r;}}}}return s.substring(maxStart, maxEnd + 1);}

5. 寻找两个正序数组的中位数

在这里插入图片描述

		/*总体思路:模拟合并数组,合并到中位数停止时间:1ms,        击败 100.00%使用 Java 的用户内存:42.03mb     击败 63.77%使用 Java 的用户*/public double findMedianSortedArrays(int[] nums1, int[] nums2) {int num = 0; // 偶数中位数数字,奇数中位数右侧数字int len = nums1.length + nums2.length;boolean b = len % 2 == 0; // 是否为偶数len /= 2; // 偶数中位数位置,奇数中位数右侧位置if (nums1.length + nums2.length == 0) return 0; // 空数组返回0if (nums1.length == 0) return b ? (nums2[len - 1] + nums2[len]) / 2.0 : nums2[len]; // 数组1为空返回数组2中位数if (nums2.length == 0) return b ? (nums1[len - 1] + nums1[len]) / 2.0 : nums1[len]; // 数组2为空返回数组1中位数int i = 0,j = 0;int oldNum = num; // 奇数中位数左侧数字while (i + j != len + 1) { // 判断是否循环至中位数oldNum = num;if (i >= nums1.length || (j < nums2.length && nums1[i] > nums2[j])) num = nums2[j++];else num = nums1[i++];}return b ? (num + oldNum) / 2.0 : num; // 返回中位数}

6. 正则表达式匹配

在这里插入图片描述

	// 动态规划public boolean isMatch(String s, String p) {//此处为length+1的目的是放入一个额外的为空的字符情况,以便于判断当*时,添加的字符情况boolean table[][]=new boolean[s.length()+1][p.length()+1];table[0][0]=true;for(int i =1;i<table[0].length;i++){char ch=p.charAt(i-1);if(i>1){//若ch=='*',则看同一行内回退两格的boolean值://(因为相当于若回退两格为true,即在选择添加该字符时可以选择数量为0(因为是'*'))if(ch=='*'){table[0][i]=table[0][i-2];}//因为第0行的s字符为空,所以和除了*以外的都不匹配,直接falseelse table[0][i]=false;}else {//如果填第一个空格,且字符为*,则赋值为true(因为*的匹配可以选择0个字符)if(ch=='*') table[0][i]=true;}}//接下来按照行优先的顺序填充表格for(int j =1;j<table.length;j++){char ch01=s.charAt(j-1);for(int h =1;h<table[j].length;h++){char ch02=p.charAt(h-1);//如果行和列对应的字符相等 || 列的字符为'.',则当前位置的值由左斜上方的值确定if(ch02==ch01||ch02=='.'){table[j][h]=table[j-1][h-1];}//如果列的字符为'*'else if(ch02=='*'){if(h>1){//按照规则,先在同一行回退两格,若该值为true则直接赋值trueif(table[j][h-2]==true) table[j][h]=true;else {//若不为true,则比较当前行的字符(s里的)与当前列-1的字符(p里的)是否相等char prev=p.charAt(h-2);//若相等 || 当前列-1的字符(p里的)为'.',将当前位置上方的值赋给当前位置if(ch01==prev||prev=='.') table[j][h]=table[j-1][h];}}}}}//返回table表的最右下方元素,即为整个字符串的匹配结果return table[s.length()][p.length()];}

7. 盛水最多的容器

在这里插入图片描述

	/*** 高往低走,长度变小、高度变小、面积一定变小* 低往高走,长度变小、高度可能变大、面积可能变大*/public int maxArea(int[] height) {int i = 0, j = height.length - 1, res = 0;while(i < j) {res = height[i] < height[j]? Math.max(res, (j - i) * height[i++]): Math.max(res,(j - i) * height[j--]);}return res;}

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

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

相关文章

【图像去噪的扩散滤波】基于线性扩散滤波、边缘增强线性和非线性各向异性滤波的图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

JVM垃圾回收篇-垃圾回收器

JVM垃圾回收篇-垃圾回收器 串行垃圾回收器 Serial串行&#xff1a;为单线程环境设计且只使用一个线程进行垃圾回收&#xff0c;会暂停所有用户的线程&#xff0c;所以不适合服务器环境&#xff0c;适用于堆内存小&#xff0c;适合于个人电脑 开启串行垃圾回收 -XX:UseSeria…

计算机的构造和原理

本资料转载于B站up主芯片超人-花 仅用于学习和讨论&#xff0c;如有侵权请联系 计算机工作原理之3D动画揭秘&#xff1a;计算机内部如何工作_哔哩哔哩_bilibili 1.CPU的部分 1.1 CPU放大看 1.2 一个芯片中&#xff0c;有80亿至100亿晶体管 1.3 放大磁道 1.4 共享3级缓存 1.5 …

无涯教程-Perl - endservent函数

描述 此功能告诉系统您不再期望使用getservent从服务文件中读取条目。 语法 以下是此函数的简单语法- endservent返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perlwhile(($name, $aliases, $port_number,$protocol_name)getservent())…

【Linux】-进程概念之进程优先级(如何去进行调度以及进程切换),还不进来看看??

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

vue2项目搭建全步骤-超级详细

文章目录 环境配置node配置安装Vue CLI ​搭建新项目vue create 搭建新项目方法一&#xff1a;选择第一个就好&#xff08;Default是自动安装&#xff0c;按下回车键进行选择&#xff09;方法二&#xff1a;配置自定义设置第一步&#xff1a;选择 Manually select features第二…

比特鹏哥5-数组【自用笔记】

比特鹏哥5-数组【自用笔记】 1.数组的概念2.一维数组的创建和初始化创建的语句结构初始化的语句结构 3.一维数组的使用数组的下标&#xff1a;从0开始&#xff0c;n个数组&#xff0c;最后一个的下标是n-1 4.一维数组在内存中的存储5.sizeof计算数组元素个数可以计算元素个数并…

AtcoderABC223场

A - Exact PriceA - Exact Price 题目大意 高橋的钱包里只有一个或多个100日元硬币&#xff0c;没有其他的东西。现在给定一个金额X&#xff0c;需要判断是否可能存在这样的情况&#xff0c;使得钱包中的总金额是X日元。 思路分析 根据题目要求&#xff0c;钱包中只有100日元…

【Spring security 解决跨域】

security 跨域 概述方案方案一方案二方案三方案四 主页传送门&#xff1a;&#x1f4c0; 传送 概述 Spring Security是一个功能强大且高度可定制的&#xff0c;主要负责为Java程序提供声明式的身份验证和访问控制的安全框架。其前身是Acegi Security,后来被收纳为Spring的一个…

栈和队列OJ题讲解

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大家三连关注&…

常见的软件项目质量管理5种方法

产品质量的重要性不言而喻&#xff0c;为了确保项目质量&#xff0c;我们需要快速高效地找出影响产品质量的因素。如果不能及时高效洞察影响因素&#xff0c;无法及时修复项目缺陷和Bug&#xff0c;往往会对项目造成意想不到的后果和风险&#xff0c;如需求变更、重要开发节点延…

matlab进行mex时出现 error LNK2019: 无法解析的外部符号

解决方法分成三个步骤&#xff1a; 1、直接在simulink模块运行出现错误&#xff0c;找不到该s函数&#xff1b; 2、需要确认安装了编译器。mex -setup 确认安装了编译器&#xff0c;再次mex xxx.c未解决&#xff1b; 3、再次查找资料发现可能编译器不知道具体的位置&#xff0c…