- 博客(206)
- 收藏
- 关注

原创 剑指 Offer题解
剑指 Offer题解04.二维数组中的查找05.替换空格06. 从尾到头打印链表07. 重建二叉树09. 用两个栈实现队列10. I. 斐波那契数列10. II. 青蛙跳台阶问题11. 旋转数组的最小数字14- I. 剪绳子14- II. 剪绳子 II15. 二进制中1的个数16. 数值的整数次方17. 打印从1到最大的n位数18. 删除链表的节点21. 调整数组顺序使奇数位于偶数前面22.链表中倒数第k个节点24. 反转链表25. 合并两个排序的链表29. 顺时针打印矩阵30. 包含min函数的栈31.
2021-06-01 11:48:22
658
21

原创 Map
Map官方文档Map关于Map的说明关于Map.Entry关于Map的说明Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复。关于Map.Entry<K, V>的说明Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类,该内部类中主要提供了<key, value>的获取,value的设置以及Key的比较方式。注意:
2021-04-03 00:07:57
701
12

原创 排序(Java)
排序概念排序常见排序算法插入排序 & 希尔排序选择排序堆排序冒泡排序快速排序归并排序总结概念排序常见排序算法插入排序1.直接插入排序2.希尔排序选择排序1.堆排序2.选择排序交换排序1.冒泡排序2.快速排序归并排序1.归并排序插入排序 & 希尔排序插入排序及希尔排序实现及其相关补充(折半插入排序,在有序区间选择数据应该插入的位置时,因为区间的有序性,可以利用折半查找的思想。):public static void bsInsertSort(int[]
2021-03-31 12:56:28
394
6

原创 225. 用队列实现栈(Java()单队列与双队列))
225. 用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from
2021-03-07 10:45:25
1290
8

原创 ArrayList 实现(Java)
接口代码://int 类型的 List 实现//int 用作下标。Integer 用于元素public interface List{ boolean add(Integer e); void add(int index,Integer e); //根据下标删除 Integer remove(int index); //删除第一个遇到的 boolean remove(Integer element); Integer get(int ind
2021-03-06 16:24:22
405
9

原创 学习MySQL,这一篇就够了(数据库管理、字段类型、数据表操作、数据库语句、数据表字符集、数据库索引)
数据库管理MySQL工具MySQL控制台客户端数据库管理创建数据库选择数据库查看数据库修改数据库删除数据库MySQL工具MySQL控制台客户端通过命令行登录MySQL的命令为:mysql -u用户名 -p密码 -h ip地址 -P端口号登录成功,MySQL控制台显示如下:数据库管理创建数据库MySQL创建数据库的语法如下:CREATE {DATABASE | SCHEMA}[IF NOT EXISTS]db_name;IF NOT EXISTS 的意思是如果不存在db_name
2020-11-13 01:55:13
755
10

原创 西北工业大学cpSkill平台Python作业NOJ(51-60)
前20传送门:https://blog.youkuaiyun.com/weixin_43520256/article/details/10913728821-30传送门:https://blog.youkuaiyun.com/weixin_43520256/article/details/10913736641-50传送门:https://blog.youkuaiyun.com/weixin_43520256/article/details/10913741161-70传送门:https://blog.youkuaiyun.com/weixin_4
2020-10-29 18:26:19
4043
8

原创 VS2019修改背景色
工具->扩展和更新->下载ClaudiaIDE重启VS2019工具->选项->ClaudiaIDE,根据自己的喜好修改图片,图片大小以及透明度。
2020-05-15 19:41:58
5009
6

原创 C语言中,%d和%u的故事
有同学问,C语言中%d,和%u有什么区别C语言课本中常出现u%,但我们常用的却是d%。c语言中的%u是输入输出格式说明符,表示按unsigned int格式输入或输出数据。%d 有符号10进制整数%i 有符号10进制整数%o 无符号8进制整数%u 无符号10进制整数%x 无符号的16进制数字,并以小写abcdef表示%X 无符号的16进制数字,并以大写ABCDEF表示%F/f ...
2020-03-23 21:35:03
19334
7
原创 顺序表+单链表
顺序表+单链表顺序表单链表区别顺序表顺序表:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。静态顺序表适用于确定知道需要存多少数据的场景,静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。相比之下动态顺序表更灵活, 根据需要动态的分配空间大小。动态顺序表实现:package _0816;/** * @author
2021-08-16 18:57:02
391
原创 Java 类加载
Java 类加载父子类执行顺序类加载概述类加载的时机加载验证准备解析初始化类加载机制父子类执行顺序父类代码块package Java40.JVM;/** * @author 枳洛淮南 * @version 1.0 * @Description 功能 * @Date 2021/7/20 19:22 */public class Parent{ private static String s = "abc"; private String o = "def";
2021-07-21 09:10:34
358
1
原创 初识JVM与JMM(Java Memory Model)
线程私有的内存区域程序计数器一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器Java 虚拟机栈每个方法执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应一个栈帧在虚拟机栈中入栈和出栈的过程。此区域一共会产生以下两种异常:如果线程请求的栈深度大于虚拟机所允许的深度(-Xss设置栈容量),将会抛出StackOverFlowError异常。虚拟机在动态扩展时无法申请到足够的内存,会抛出OOM(OutOfMe
2021-07-18 20:12:06
299
原创 23. 合并K个升序链表
23. 合并K个升序链表链接思路1、顺序合并2、分治合并代码1、顺序合并2、分治合并链接合并K个升序链表思路1、顺序合并合并两个有序链表先完成一个可以合并两个升序链表的方法,用一个变量 ret 来维护以及合并的链表,第 i 次循环把第 i 个链表和 ret合并,答案保存到 ret中2、分治合并将 kk 个链表配对并将同一对中的链表合并;第一轮合并以后, k 个链表被合并成了 2/k个链表,平均长度为 2n/k,然后是 4/k个链表, 8/k 个链表等等;重复这一过程,直到我们得到了最终
2021-07-18 12:55:03
262
1
原创 19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点链接思路1、双指针2、计算链表长度3、栈代码1、双指针2、计算链表长度3、栈链接删除链表的倒数第 N 个结点思路1、双指针链表中倒数第k个节点可以使用两个指针 p 和 q 同时对链表进行遍历,并且 [t 比 q 快 n 个节点。当 p 遍历到链表的末尾时,q 恰好处于倒数第 n 个节点。具体地,初始时 p 和 q 均指向头节点。首先使用 p 对链表进行遍历,遍历的次数为 n次。此时,p 和 q 之间间隔了 n−1 个节点,即 p 比 q 超前了 n 个节点。
2021-07-18 12:18:37
313
原创 剑指 Offer 57 - II. 和为s的连续正数序列
剑指 Offer 57 - II. 和为s的连续正数序列链接代码枚举枚举+数学优化双指针链接剑指 Offer 57 - II. 和为s的连续正数序列代码枚举枚举每个正整数为起点,判断以它为起点的序列和 sum 是否等于 target 即可,由于题目要求序列长度至少大于 2,所以枚举的上界为public int[][] findContinuousSequence1(int target) { //让每个整数都做为起点尝试 List<int[]&g
2021-07-11 15:47:18
209
原创 剑指 Offer 63. 股票的最大利润
剑指 Offer 63. 股票的最大利润链接代码暴力破解法寻找最低点链接剑指 Offer 63. 股票的最大利润代码暴力破解法除了慢一点也没啥//双循环暴力法 public int maxProfit(int[] prices) { int ret = 0; for (int i = 0; i < prices.length - 1; i++) { for (int j = i + 1; j <
2021-07-08 11:48:53
209
原创 剑指 Offer 64. 求1+2+…+n
剑指 Offer 64. 求1+2+…+n链接解法链接剑指 Offer 64. 求1+2+…+n解法C++解法class Solution {public: int sumNums(int n) { int temp = n; temp && (temp += (sumNums(n-1))); return temp; }};Javapublic int sumNums(int n) {
2021-07-08 11:23:26
124
原创 剑指 Offer 49. 丑数
剑指 Offer 49. 丑数链接思路代码链接剑指 Offer 49. 丑数思路第一个丑数是1,以后的丑数都是基于前面的丑数进行计算获得,分别乘2,3,5构成。我们每次添加进去一个当前计算出来个三个丑数的最小的一个,并且是谁计算的,谁指针就后移一位。代码class Solution { //第一个丑数是1,以后的丑数都是基于前面的丑数进行计算获得 // 分别乘2,3,5构成的。我们每次添加进去一个当前计算出来个 // 三个丑数的最小的一个,并且是谁计算的,谁指针就后移一
2021-07-07 14:51:31
167
原创 剑指 Offer 58 - II. 左旋转字符串
剑指 Offer 58 - II. 左旋转字符串链接题解代码链接剑指 Offer 58 - II. 左旋转字符串题解首先判断字符串是否为空字符串,若为空字符串则无论怎样旋转返回值都是空字符串然后在确保字符串不为空的情况下,判断要旋转的字符个数,将大于字符串长度的数进行取模,最后达到的旋转字符数必然小于字符串长度之后用substring函数解决问题即可代码class Solution { public String reverseLeftWords(String s, int n)
2021-06-29 00:57:50
175
原创 剑指 Offer 61. 扑克牌中的顺子
剑指 Offer 61. 扑克牌中的顺子链接题解代码链接剑指 Offer 61. 扑克牌中的顺子题解首先将数组进行排序,然后遍历数组,记录数组中万能牌(0)的数量,遍历完万能牌后,遍历非万能牌,若某一非万能牌的下一张牌与其相等,则该数组必然不为顺子,后续如果牌不连续,则记录空缺位置,直到遍历完数组,然后比较万能牌是否大于等于空缺位的数量,大于等于则为顺子,反之则不为顺子。代码public boolean isStraight(int[] nums) { //首先将数组排序
2021-06-29 00:36:42
137
原创 剑指 Offer 41. 数据流中的中位数
剑指 Offer 41. 数据流中的中位数链接思路代码链接剑指 Offer 41. 数据流中的中位数思路用大顶堆+小顶堆方法,可以看作大顶堆是普通班,小顶堆是实验班。数量上时刻保持 小顶-大顶<=1(两堆相等或者小顶比大顶多一个)。新学生先入普通班(大顶堆),此时可能会失去平衡了,于是取大顶堆的第一个(班里最好的学生)加入实验班(小顶堆),判断若数量过多(不是等于或多一个),取第一个(实验班里最差的学生)到普通班(大顶堆)里。取中位数的时候,若两堆数量相等,则各取堆顶取平均,若小顶比大顶多一,
2021-06-19 20:46:34
124
原创 剑指 Offer 46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串链接题解链接添加链接描述题解class Solution { public int translateNum(int num) { if (num <= 9) { return 1; } //获取输入数字的余数(后两位),递归翻译 int temp = num % 100; //小于等于9 或 大于等于 26 ,余数
2021-06-19 15:25:54
155
原创 面试题 02.01. 移除重复节点
面试题 02.01. 移除重复节点链接思路代码链接面试题 02.01. 移除重复节点思路记录已经出现过的结点,添加未出现过的结点,三种方法都在代码里,并不难理解代码public ListNode removeDuplicateNodes(ListNode head) { //传入为空或只有一个结点,则返回head if (head == null || head.next == null) { return hea
2021-06-02 20:52:50
167
原创 剑指 Offer 50. 第一个只出现一次的字符
剑指 Offer 50. 第一个只出现一次的字符连接思路代码连接剑指 Offer 50. 第一个只出现一次的字符思路创建一个字典数组,遍历一次将字符串中出现过的字母次数存进字典数组,再遍历一次字符串,将首次出现次数为 1 的字母输出,没有为 1 次数的字母的话就返回 ’ ’代码class Solution { public char firstUniqChar(String s) { if ("".equals(s)) {
2021-06-01 11:26:04
139
原创 剑指 Offer 65. 不用加减乘除做加法
剑指 Offer 65. 不用加减乘除做加法链接思路代码链接剑指 Offer 65. 不用加减乘除做加法思路^ 亦或 ----相当于 无进位的求和, 想象10进制下的模拟情况:(如:19+1=20;无进位求和就是10,而非20;因为它不管进位情况)& 与 ----相当于求每位的进位数, 先看定义:1&1=1;1&0=0;0&0=0;即都为1的时候才为1,正好可以模拟进位数的情况,还是想象10进制下模拟情况:(9+1=10,如果是用&的思路来处理,则9+1得到
2021-05-31 16:17:39
182
1
原创 剑指 Offer 62. 圆圈中最后剩下的数字
剑指 Offer 62. 圆圈中最后剩下的数字约瑟夫环问题链接解法链表解法公式法约瑟夫环问题约瑟夫环问题是个著名的问题:N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。例如只有三个人,把他们叫做A、B、C,他们围成一圈,从A开始报数,假设报2的人被杀掉。首先A开始报数,他报1。侥幸逃过一劫。然后轮到B报数,他报2。非常惨,他被杀了C接着从1开始报数接着轮到A报数,他报2。也被杀死了。最终胜利者是C链接剑指 Offe
2021-05-25 15:49:06
543
8
原创 剑指 Offer 57. 和为s的两个数字
剑指 Offer 57. 和为s的两个数字链接代码链接剑指 Offer 57. 和为s的两个数字代码public int[] twoSum(int[] nums, int target) { //递增,有序 int left = 0, right = nums.length - 1; while (left <= right) { //左右两数和 int mid = num
2021-05-25 11:34:10
167
1
原创 剑指 Offer 53 - II. 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字链接解法遍历代码二分代码双指针链接剑指 Offer 53 - II. 0~n-1中缺失的数字解法遍历使用一个数组,该数组长度为原数组长度+1,遍历原数组,新数组中下标为原数组中元素,则将其赋值为1,否则不用管则为0,遍历新数组,返回元素为1的下标,即为原数组中丢失的数字代码class Solution { public int missingNumber(int[] nums) { //递增,排序
2021-05-25 11:11:17
299
1
原创 1356. 根据数字二进制下 1 的数目排序
1356. 根据数字二进制下 1 的数目排序链接解法一解法二链接1356. 根据数字二进制下 1 的数目排序解法一数组重赋值//数组重赋值,由于题目限定arr[i] 中的数不超过 10000 public int[] sortByBits(int[] arr) { int[] ret = new int[arr.length]; for (int i = 0; i < arr.length; i++) {
2021-05-18 14:23:25
122
原创 1122. 数组的相对排序
1122. 数组的相对排序链接解法代码大佬链接1122. 数组的相对排序解法遍历arr1,如果map中没有某元素,则将其put进去并设置值为从,否则将值加一,然后遍历arr2,按相对顺序将元素去除并放入预先准备好的数组arr3,然后将对应元素的值减一,直到减到0,然后将arr1排序,并将剩余元素放入arr3代码class Solution { public int[] relativeSortArray(int[] arr1, int[] arr2) { //a
2021-05-18 10:58:56
361
原创 234. 回文链表 面试题 02.06. 回文链表
234. 回文链表链接解法一代码解法二代码链接234. 回文链表解法一先将链表进行反转,然后对其 val 进行依次判断,不同则返回 false这里注意:反转的时候要用一个副本来进行反转,否则会对后续判断造成影响代码class Solution { public boolean isPalindrome(ListNode head) { if (head == null || head.next == null) { r
2021-05-15 16:01:40
274
原创 12. 整数转罗马数字 13. 罗马数字转整数
12. 整数转罗马数字 13. 罗马数字转整数链接代码链接代码链接12. 整数转罗马数字代码class Solution { public String intToRoman(int num) { int[] values = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; String[] reps = new String[]{"M", "CM", "D", "CD
2021-05-14 12:56:44
217
1
原创 349. 两个数组的交集 350. 两个数组的交集 II
349. 两个数组的交集 350. 两个数组的交集 II链接解法一解法二解法链接349. 两个数组的交集解法一class Solution { public int[] intersection(int[] nums1, int[] nums2) { if (nums1 == null || nums2 == null) { return null; } Set<Integer>
2021-05-14 12:33:45
157
原创 263. 丑数
263. 丑数链接代码链接263. 丑数代码public boolean isUgly(int n) { if (0 == n) { return false; } while (n % 2 == 0 || n % 3 == 0 || n % 5 == 0) { if (n % 2 == 0) { n /=
2021-05-13 22:43:14
95
原创 231. 2的幂 326. 3的幂 342. 4的幂
LeetCode231. 2的幂链接代码326. 3的幂链接代码342. 4的幂链接代码231. 2的幂链接231. 2代码//循环 public boolean isPowerOfTwo(int n) { if (0 == n) { return false; } while (n % 2 == 0) { n /= 2; }
2021-05-13 22:29:04
284
原创 204. 计数质数(厄拉多塞筛法)
204. 计数质数链接厄拉多塞筛法代码普通解法链接204. 计数质数厄拉多塞筛法西元前250年,希腊数学家厄拉多塞(Eeatosthese)想到了一个非常美妙的质数筛法,减少了逐一检查每个数的的步骤,可以比较简单的从一大堆数字之中,筛选出质数来,这方法被称作厄拉多塞筛法(Sieve of Eeatosthese)。具体操作:先将 2~n 的各个数放入表中,然后在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再划去3的其他倍数;现在既未画圈又没有被划去的第一
2021-05-13 09:38:13
485
1
原创 118. 杨辉三角
118. 杨辉三角链接链接118. 杨辉三角class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> ret = new ArrayList<>(); for (int i = 0; i < numRows; i++) { List
2021-05-11 15:21:23
124
原创 108. 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树链接代码链接108. 将有序数组转换为二叉搜索树代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeN
2021-05-11 15:00:21
173
原创 28. 实现 strStr()
@[TOC](28. 实现 strStr())链接28. 实现 strStr()一首先对特殊字符串进行判断public static int strStr1(String haystack, String needle) { if ("".equals(needle)) //needle 为空字符串 { return 0; } //到了这里,则 needle 必然不为空,若 haystack 为空,
2021-05-10 13:21:45
96
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人