- 博客(109)
- 收藏
- 关注
原创 二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定
2022-06-01 22:56:40
98
原创 0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8题解思路有序数组———二分法数组可以按照以下规则划分为两部分。左子数组: nums[index]=index;右子数组: nums[index]≠index;缺失的数字等于 “右子数组的首位元素”
2022-05-29 15:50:58
170
原创 剑指 Offer 53 - I. 在排序数组中查找数字 I
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0代码在这里插入代码片
2022-05-29 13:23:41
238
原创 JZ52 两个链表的第一个公共结点
描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围: n≤1000要求:空间复杂度 O(1),时间复杂度 O(n例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。输入描述:输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第
2022-05-29 00:13:34
103
原创 剑指 Offer 03. 数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3哈希查找使用哈希表,因为哈希表判断是否存在的时间复杂度是 O(1)。1、先初始化一个哈希表 (HashSet)2、然后遍历每一个元素,分别对每一个元素做如下的处理:先判断哈希表中是否存在这个元素如果存在的
2022-05-28 22:16:12
195
原创 剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”局部反转+整体反转反转整个字符串反转区间为前n的子串反转区间为n到末尾的子串代码class Sol
2022-05-28 18:22:17
74
原创 剑指 Offer 05.替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”思路StringBuilderJava 中的字符串是不变的,所以直接替换是不行的。我们知道 Java 中有个 StringBuilder 是表达可变的字符串的。我们可以使用 StringBuilder 来实现替换空格初始化一个 StringBuilder 实例buf遍历字符串 s 的每个字符:当遍历到非空字符的时候,直接将字符
2022-05-28 16:48:08
101
原创 剑指 Offer 35. 复杂链表的复制
题目请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]示例 3:输
2022-05-27 19:39:09
83
原创 剑指 Offer:反转链表
题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路1迭代(双指针)遍历链表,并在访问各节点时修改 next 引用指向。代码class Solution { public ListNode reverseList(ListNode head) { //pre前一个节点,cur当
2022-05-26 21:45:59
239
原创 JZ25 合并两个排序的链表
题目输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围: 0≤n≤1000,−1000≤节点值≤1000要求:空间复杂度 O(1),时间复杂度 O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2,3,4,4},转换过程如下图所示:
2022-05-26 12:02:46
169
原创 包含min函数的栈
题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.
2022-05-25 20:19:07
330
原创 用两个栈实现队列
题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][ [] , [3] , [] , [] ]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“a
2022-05-25 15:48:43
86
原创 快速排序算法
算法步骤从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;演示public class QuickSort implements IArraySort { @Override public
2022-05-24 16:54:00
115
原创 算法时间复杂度
时间复杂度基本运算次数相对与输入规模的函数A(n)的第一部分:表示X在数组中时间复杂度式中ipni \frac pn inp表示i——x在第i个位置查找所需要的对比次数为i次pn\frac pnnp——表示x在第i个位置的概率(ppp为x在数组概率,1n\frac 1nn1为每个位置出现的概率)A(n)的第二部分:表示X不在数组的时间复杂度式中1−p{1-p}1−p表示x没有出现在数组中的概率n{n}n表示x没有出现在数组中需要比较的次数...
2022-05-23 11:37:10
176
转载 JZ24反转链表
题目给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0\leq n\leq10000≤n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:示例1输入:{1,2,3}返回值:{3,2,1}示例2输入:{}输出:{}说明:空链表则输出空解答
2022-05-20 15:44:50
127
原创 栈的数组与链表实现
栈(stack)线性数据结构;先入先出(first in last out 即FILO),先放入的在栈底(bottom),后放入的在栈顶(top)。操作入栈(push)和出栈(pop)入栈(push)出栈(pop)实现方式链表和数组两种1.数组实现声明一个固定大小的数组arr入栈将索引index指向0位置压入数据的时候,先给arr[index]赋值index++如果index=arr.length的时候,用户要入栈,给用户抛出“栈已满”的异常出栈先将i
2022-05-20 13:54:54
210
原创 字符串中找出连续最长的数字串C++
题目读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789思路从字符串的0号位置开始寻找数字,开始设i=0,j=0。先找第一个数字,i不断后移,遇到数字,则j=i,j为数字的最高位,i继续后移直到字符不是数字位置;用len记录这个数字的位数;通过strin
2022-05-17 17:20:00
892
原创 Anaconda配置Pytorch镜像源
channels: - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-f
2022-05-16 17:46:32
1026
原创 从尾到头打印链表
题目输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3}的链表如下图:返回一个数组为[3,2,1]0 <= 链表长度 <= 10000示例1输入: {1,2,3}返回值: [3,2,1]示例2输入:{67,0,24,58}返回值:[58,24,0,67]解答 1**知识点 **递归:调用自身,分解问题,将大型问题转化为与原问题等价的小规模问题。思路链表无法逆序访问,可通过递归从底层往上回溯的方式遍历链表。
2022-05-10 13:58:10
480
原创 java改错题
下面有关Java的说法正确的是( )A. 一个类可以实现多个接口B. 抽象类必须有抽象方法C. protected成员在子类可见性可以修改D. 通过super可以调用父类构造函数E. final的成员方法实现中只能读取类的成员变量F. String是不可修改的,且java运行环境中对string对象有一个常量池保存正确答案:A C D FA对:java类单继承,多实现B错:被abstract修饰的类就是抽象类,有没有抽象方法无所谓C错:描述有问题。protected成
2021-11-04 16:39:48
2245
原创 servlet包的名称
常用的servlet包的名称是?A. java.servletB. javax.servletC. servlet.httpD. javax.servlet.http正确答案:B D使用 Java 技术开发 WEB 应用程序 , 深入了解 Servlet 的机制对应用的开发将有重要的推动作用 . 而想深入了解 Servlet 的机制就不得不了解 javax.servlet 包 .javax.servlet 包中包含了 7 个接口 ,3 个类和 2 个异常类 , 它们分别是 :接口Requ
2021-11-04 14:25:28
1289
原创 Java语言是静态多分派,动态单分派的。
根据下面这个程序的内容,判断哪些描述是正确的:( )public class Test { public static void main(String args[]) { String s = "tommy"; Object o = s; sayHello(o); //语句1 sayHello(s); //语句2 } public static void sayHello(String to) { S
2021-11-03 21:38:48
162
原创 java中wait()、sleep()和yield()
下面说法正确的是?()A. 调用Thread的sleep()方法会释放锁,调用wait()方法不释放锁B. 一个线程调用yield方法,可以使具有相同优先级线程获得处理器C. 在Java中,高优先级的可运行的线程会抢占低优先级线程的资源D. java中,线程可以调用yield方法使比自己低优先级的线程运行正确答案: B Cwait():等待时线程别人可以用。sleep():等待时线程还是自己的,别人不能用。yield():释放锁,同优先级的其他线程有机会获得锁。sleep是thr
2021-10-30 21:45:07
779
原创 Java内部类
往OuterClass类的代码段中插入内部类声明, 哪一个是错误的:public class OuterClass{ private float f=1.0f; //插入代码到这里}A. class InnerClass{public static float func(){return f;}}B. abstract class InnerClass{public abstract float func(){}}C. static class InnerCla
2021-10-30 20:07:02
118
原创 java中的集合总结
列表(List)的元素是有序、可重复的,有索引;集合(Set)的元素是无序、不可重复的。映射(map) 使用的是键值对存放,可一对多,key不重复,value可重复 ,同时它没有继承Collection。List(列表)底层是数组存储数据的,所以有序,可重复的Set(集合)底层是HashMap,添加元素其实就是调用map的put()方法,添加的元素作为map的key,value是一个Object对象而Hashmap底层是哈希表,数组+链表的形式,根据key的hashcode()方法获取到的值与它.
2021-10-27 21:40:49
77
原创 java中的数组初始化
数组初始化有三种方式:动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;静态初始化:在定义数字的同时就为数组元素分配空间并赋值;默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。public class Test { public static void main(String[] args) { //动态初始化 int[] a;//int a[];两者都可以 a = new int[10]
2021-10-27 20:01:25
1283
原创 java中的try、finally、return
以下代码执行后输出结果为( )public class Test { public static void main(String[] args) { System.out.println("return value of getValue(): " + getValue()); } public static int getValue() { try { return 0;
2021-10-27 18:14:06
1114
原创 java中的多态部分
A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明:1. A a0=new A();2. A a1 =new B();3. A a2=new C(); 问以下哪个说法是正确的?( )第1行不能通过编译第1、2行能通过编译,但第3行编译出错第1、2、3行能通过编译,但第2、3行运行时出错第1行、第2行和第3行的声明都是正确的正确答案: A抽象类和接口不能实例化,但抽象类有构造方法,而接口没有!接口没有构造方法所以不能被实例
2021-10-27 17:50:26
106
原创 java中基本数据类型和包装类的比较
Integer i = 42;Long l = 42l;Double d = 42.0;为true的是l.equals(42L)包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱包装类的equals()方法不处理数据转型
2021-10-26 22:56:55
1954
原创 Servlet的生命周期
Servlet的生命周期Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet2.创建:通过调用Servlet的构造函数来创建一个Servlet实例3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。4.处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请
2021-10-25 21:01:00
372
原创 java异常
java异常异常是指程序运行时(非编译)所发生的非正常情况或错误,当程序违反了语音规则,jvm就会将出现的错误表示一个异常抛出。异常也是java 的对象,定义了基类 java.lang.throwable作为异常父类。 这些异常类又包括error和exception两大类error类异常主要是运行时逻辑错误导致,一个正确程序中是不应该出现error的。当出现error一般jvm会终止。exception表示可恢复异常,包括检查异常和运行时异常。 检查异常是最常见异常比如 io异常sql异常,都发生在
2021-10-25 20:31:20
70
原创 java初始化的加载顺序2
java初始化的加载顺序为:父类静态成员变量 父类静态代码块 子类静态成员变量 子类静态代码块 父类非静态成员变量,父类非静态代码块,父类构造函数,子类非静态成员变量,子类非静态代码块,子类构造函数例:class StaticStuff{ static int x=10; static { x+=5; } public static void main(String args[ ]){ System.out.println(“
2021-10-25 19:17:19
449
原创 Java创建对象的5种方式
Java创建对象的几种方式用new语句创建对象,是最常见的创建对象的方法。ObjectName obj = new ObjectName();运用反射手段,调用java.lang.Class的newInstance()实例方法。ObjectName obj = ObjectName.class.newInstance();使用反射的java.lang.reflect.Constructor类的newInstance()方法ObjectName obj = ObjectName.clas
2021-10-25 10:11:11
198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人