无重复字符的最长子串
力扣 3. 无重复字符的最长子串题目说明给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
提示:
0 <= s.length <= 5 * 10^4
s 由英文字母、数字、符号和空格组成
示例示例 1:
123输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
123输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
1234输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
示例 4:
12输入: s = ""输出: 0
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为中等题。
解法当笔 ...
两数相加
力扣 2. 两数相加题目说明给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
提示:
每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零
示例示例 1:
123输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.
示例 2:
12输入:l1 = [0], l2 = [0]输出:[0]
示例 3:
12输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,直接用数组将链表中的值取出来并合并让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122 ...
Java基础
引入 笔者学习 Java 也有两三年了,一直没有对所学的进行一个回顾及总结,今天想借着学习JavaGuide哥的 《Java 基础》 的机会,对自己所学的知识进行记录和回顾, 笔者会顺着guide哥的讲解进行记录和回顾。
1、基础概念与常识1.1 Java 的特点和趋势 java语言诞生以及20多年了,一直火热至今,近些年在全球的开发者的使用和学习比例一直名列前茅。众所周知,c++又称cpp,也就是所谓的c plus plus,而java又是从c++的基础上进行了改造,有人戏称java是c++ plus plus,可以看出它吸收了c/c++的许多优点,也有着自己所独有的许多特点。
简单性,java语言相对于c/c++以及汇编语言等更加简单易学
面向对象(封装,继承,多态)
可移植性( Java 虚拟机实现平台无关性)
可靠性(Java不支持指针,提供内存回收机制)
安全性
支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便)
编译与解释并存
多线程性(Java是多线程语言,它提供支持多线程的执行,能 ...
逆波兰表达式求值(cpp)
力扣 150. 逆波兰表达式求值题目说明根据 逆波兰表示法,求表达式的值。
有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
1 <= tokens.length <= 10^4
tokens[i] 要么是一个算符("+"、"-"、"*" 或 "/"),要么是一个在范围 [-200, 200] 内的整数
示例例1123输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
例2123输入:tokens = ["4","13","5","/","+&q ...
有效的括号
力扣 20. 有效的括号题目说明
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
提示:
1 <= s.length <= 10^4
s 仅由括号 '()[]{}' 组成
示例示例 1:
12输入:s = "()"输出:true
示例 2:
12输入:s = "()[]{}"输出:true
示例 3:
12输入:s = "(]"输出:false
示例 4:
12输入:s = "([)]"输出:false
示例 5:
12输入:s = "{[]}"输出:true
笔者理解此题是一道字符串算法问题,在力扣题库中被定义为简单题。 ...
合并两个有序数组
力扣 88. 合并两个有序数组题目说明
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
提示:
nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-10^9 <= nums1[i], nums2[i] <= 10^9
示例示例 1:
12输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]
示例 2:
12输入:nums1 = [1], m = 1, nums2 = [], n = 0输出:[1]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题考察 ...
两数之和
力扣 1. 两数之和题目说明
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
提示:
2 <= nums.length <= 10^4
-10^9 <= nums[i] <= 10^9
-10^9 <= target <= 10^9
只会存在一个有效答案
示例示例 1:
123输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
12输入:nums = [3,2,4], target = 6输出:[1,2]
示例 3:
12输入:nums = [3,3], target = 6输出:[0,1]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为简单题,同时也是题库中的第一题。
解法当笔者阅读完此题后 ...
最大子序和
力扣 53. 最大子序和题目说明
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
提示:
1 <= nums.length <= 3 * 10^4
-10^5 <= nums[i] <= 10^5
示例示例 1:
123输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
12输入:nums = [1]输出:1
示例 3:
12输入:nums = [0]输出:0
示例 4:
12输入:nums = [-1]输出:-1
示例 5:
12输入:nums = [-100000]输出:-100000
笔者理解此题是一道数组算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题考察的是比较简单的动态规划思想,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920class Solution { /* * 动态规划 ...
快速排序
AcWing 785. 快速排序题目说明给定你一个长度为 n 的整数数列。
请你使用快速排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
输入格式输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在 1∼10^9 范围内),表示整个数列。
输出格式输出共一行,包含 n 个整数,表示排好序的数列。
数据范围1≤n≤100000
输入样例:1253 1 2 4 5
输出样例:11 2 3 4 5
笔者理解此题是一道排序算法问题,在AcWing题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题有多种解法,根据题目所以使用快速排序,快速排序采用基准元素的方式,将原数组部分进行逐渐有序化进行求解,让我们来看看具体如何实现的吧。
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import java.util.Scanner;class Main ...
矩阵中战斗力最弱的K行
力扣 1337. 矩阵中战斗力最弱的 K 行题目说明
给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。
请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。
如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。
军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。
提示:
m == mat.length
n == mat[i].length
2 <= n, m <= 100
1 <= k <= m
matrix[i][j] 不是 0 就是 1
示例示例 1:
12345678910111213141516输入:mat = [[1,1,0,0,0], [1,1,1,1,0], [1,0,0,0,0], [1,1,0,0,0], [1,1,1,1,1]], k = 3输出:[2,0,3]解释:每行中的军人数目:行 0 -> 2 行 1 -> 4 行 2 -> 1 行 3 -> 2 行 4 ...








