155.最小栈
155.最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
思路给你一个数组 nums,如何计算每个前缀的最小值?
定义 preMin[i] 表示 nums[0] 到 nums[i] 的最小值。
这可以从左到右计算:
preMin[0]=nums[0]。 preMin[1]=min(nums[0],nums[1])。 preMin[2]=min(nums[0],nums[1],nums[2])=min(preMin[1],nums[2])。 preMin[3]=min(nums[0],nums[1],nums[2],nums[3])=min(preMin[2],nums[3])。……一般地,我们有
preMin[i]=min(preMin[i−1],nums[i])
简单来说就 ...
深度学习
深度学习和机器学习的区别特征提取方面
机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识
深度学习通常有多个层组成,它们通常将更简单的模型组合在一起,通过将数据从一层传递到另一层来构建更复杂的模型。通过大量数据的训练自动得到模型,不需要人工设计特征提取环节
深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特地部分。因此,减少了为每个问题开发新特征提取器的任务。适合用于在难提取的图像、语音、自然语言领域。
神经网络人工神经网络Artificial Neural Network,简写为ANN,也简称为神经网络(NN)
经典神经网络结构包含三个层次的神经网络。
输入层
输出层
隐藏层
深度学习进阶深度学习正则化学习目标
了解偏差与方差的意义
知道L2正则化与L1正则化的数学意义
知道Droupout正则化方法
了解早停止法、数据增强法的其他正则化方式
方差与偏差数据集划分
训练集(train set):用训练集对算法或模型进行训练过程
验证集(development set):利用验证集(又称为简单交叉验证集,hold-out cross validat ...
简化路径
71.简化路径给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为 更加简洁的规范路径。
在 Unix 风格的文件系统中规则如下:
一个点 '.' 表示当前目录本身。
此外,两个点 '..' 表示将目录切换到上一级(指向父目录)。
任意多个连续的斜杠(即,'//' 或 '///')都被视为单个斜杠 '/'。
任何其他格式的点(例如,'...' 或 '....')均被视为有效的文件/目录名称。
返回的 简化路径 必须遵循下述格式:
始终以斜杠 '/' 开头。
两个目录名之间必须只有一个斜杠 '/' 。
最后一个目录名(如果存在)不能 以 '/' 结尾。
此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。
返回简化后得到的 规范路径
思路给你一组由 / 隔开的字符 ...
有效的括号
20.有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
思路
建立一个栈
字符长度不能被二整除,则不匹配
首先左括号直接入栈
接着不是左括号且为空,则不匹配
右括号则出栈,判断是否匹配
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package com.wereash.scut_hot100;import java.util.ArrayDeque;import java.util.Deque;import java.util.Scanner;/** * @Author: WereAsh * @Date:2026-01-23 20:17 **/publ ...
两数之和2
167. 两数之和 II - 输入有序数组给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。
以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。
你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
你所设计的解决方案必须只使用常量级的额外空间。
思路
双指针
1234567891011121314151617181920212223242526272829303132package com.wereash.scut_hot100;import java.util.Scanner;/** * @Author: WereAsh * @Date:2026-01-22 19:15 **/public clas ...
验证回文串
125.验证回文串如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。
思路:
双指针
类函数
大小写转换
12345678910111213141516171819202122232425262728293031package com.wereash.scut_hot100;import java.util.Scanner;/** * @Author: WereAsh * @Date:2026-01-21 19:25 **/public class Solution125 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); int left=0,righ ...
找出字符串中第一个匹配项的下标
28.找出字符串中第一个匹配项的下标给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
12345678910111213141516171819202122232425package com.wereash.scut_hot100;import java.util.Scanner;/** * @Author: WereAsh * @Date:2026-01-20 19:02 **/public class Solution028 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); String haystack=scanner.nextLine(); String needle=scanner.nextLine(); i ...
反转字符串中的单词
151.反转字符串中的单词给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
str.trim() 的作用
功能:去除字符串开头和结尾的所有空白字符(whitespace)
空白字符包括:空格( )、制表符(\t)、换行符(\n)、回车符(\r)等
重要特性:只去除首尾空白,不会去除中间的空格
split("\\s+") 的详细解释a) 正则表达式 "\\s+"
\\s:在正则表达式中表示任何空白字符
包括:空格、制表符、换行符、回车符等
注意:Java字符串中 \ 需要转义,所以要写成 \\s
+:表示一个或多个前面的字符
\\s+ 表示一个或多个连续的空白字符
b) 分割过程对于 "hello world":
123 ...
最长公共前缀
14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
substring(0,length),起始位置0,字符串长度length
思路:
若存在公共前缀,则一定是在任何一个字符串中存在
选取str[0]最为参照
若str[0].charAt[i]的下标i超出str[j].length,表明str[j]的长度不满足继续搜索最长前缀,则返回
若str[0].charAt[i]不等于str[j].charAt[i],表明当前元素不匹配,前缀匹配结束,则返回
代码123456789101112131415161718192021222324252627282930package com.wereash.scut_hot100;import java.util.Scanner;/** * @Author: WereAsh * @Date:2026-01-18 22:23 **/public class Solution014 { public static void main(String[] args) ...
判断子序列
392.判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
思路:
双指针分别指向两个个字符串,相同则一起移动,不同则移动主串指针,直到主串指针移动到最后。
123456789101112131415161718192021222324252627282930package com.wereash.scut_hot100;import java.util.Scanner;/** * @Author: WereAsh * @Date:2026-01-15 19:06 **/public class Solution392 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); Strin ...







