- 博客(31)
- 收藏
- 关注
原创 LeetCode题 202快乐数(哈希解)
编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。 示例 1: 输入:n = 19 输出:true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 示例 2: 输入:n
2021-12-06 08:36:14
114
原创 LeetCode题 454.四数相加(哈希:map)
给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 示例 1: 输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2] 输出:2 解释: 两个元组如下: (0, 0, 0, 1) ->
2021-12-05 17:31:35
247
原创 LeetCode题 18.四数之和(双指针)
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 <= a, b, c, d < n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。 示例 1: 输入:nums = [1,0,-1,
2021-12-01 22:36:24
120
原创 LeetCode题 15.三数之和(双指针)
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 示例 2: 输入:nums = [] 输出:[] 示例 3: 输入:nums = [0] 输出:[] 提示: 0 <= nums.length <= 3000 -105 <
2021-12-01 22:34:12
96
原创 LeetCode题 面试题02.07 链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Intersected at ‘8’ 解释:相交节点的
2021-11-30 18:31:28
68
原创 LeetCode题 19. 删除链表的倒数第 N 个结点(双指针法)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz 进阶:你能尝试使用一趟扫描实现吗? /**
2021-11-29 23:49:02
161
原创 LeetCode题 206.反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 /** * Definition for singly-linked list. * public class ListNod
2021-11-29 23:47:25
289
原创 LeetCode题 151. 翻转字符串里的单词
给你一个字符串 s ,逐个翻转字符串中的所有 单词 。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 说明: 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。 示例 1: 输入:s = “the sky is blue” 输出:“blue is sky the” 示例 2: 输入:s = " hello world " 输
2021-11-28 23:51:29
206
原创 LeetCode题 剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = “We are happy.” 输出:“We%20are%20happy.” 限制: 0 <= s 的长度 <= 10000 双指针法 public String replaceSpace(String s) { if(s == null || s.length() == 0){ return s; } //扩充空间,空格数量2倍 StringBuilder
2021-11-28 17:56:26
129
原创 LeetCode题 242. 有效的字母异位词(哈希表)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 提示: 1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含小写字母 class Solution { pub
2021-11-20 19:35:57
199
原创 LeetCode题 242. 有效的字母异位词(哈希表)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true 示例 2: 输入: s = “rat”, t = “car” 输出: false 提示: 1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含小写字母 // An highlighted block
2021-11-20 19:33:56
168
原创 LeetCode题 59. 螺旋矩阵 II(模拟行为)
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 输入:n = 1 输出:[[1]] class Solution { public int[][] generateMatrix(int n) { int[][] res = new int[n][n]; //循环次数 int l
2021-11-19 20:02:06
349
原创 LeetCode题 209. 长度最小的子数组——(Java)双指针法
给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 class Solution { public int minSubArrayLen(int target, int[] nums) { int left = 0; int result = Integer.MAX_
2021-11-19 19:58:14
254
原创 LeetCode题 977. 有序数组的平方(双指针解法)
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100] 示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121] class Solution { public int[] sortedSquares(i
2021-11-17 23:00:54
65
原创 leetcode题 844. 比较含退格的字符串(解法一:用双指针)
思路:一个字符是否会被删掉,只取决于该字符后面的退格符,而与该字符前面的退格符无关。因此当我们逆序地遍历字符串,就可以立即确定当前字符是否会被删掉。 具体地,我们定义 skip 表示当前待删除的字符的数量。每次我们遍历到一个字符: 若该字符为退格符,则我们需要多删除一个普通字符,我们让 skip 加 1; 若该字符为普通字符: 若 skip 为 0,则说明当前字符不需要删去; 若 skip 不为 0,则说明当前字符需要删去,我们让 skip 减 1。 这样,我们定义两个指针,分别指向两字符串的末
2021-11-16 23:23:58
470
原创 java实现基数排序
package com.atguigu.Sort; import java.util.Arrays; /** * @author shkstart * @create 2021 -11-04 19:58 */ public class RadixSort { public static void main(String[] args) { int[] arr = {53,3,542,748,14,214}; radixSort(arr); }
2021-11-06 18:36:50
112
原创 Java实现归并排序
package com.atguigu.Sort; import java.util.Arrays; /** * @author shkstart * @create 2021 -11-04 15:26 */ public class MergetSort { public static void main(String[] args) { int[] arr = {8,4,5,7,1,3,6,2}; int[] temp = new int[arr.len
2021-11-05 19:14:05
80
原创 2021-11-05Java实现快速排序
package com.atguigu.Sort; import java.util.Arrays; /** * @author shkstart * @create 2021 -11-04 12:16 */ public class QuickSort { public static void main(String[] args) { // int[] arr = {8,9,1,7,2,3,5,4,6,0}; int[] arr = new int[800
2021-11-05 19:13:10
107
原创 2021-11-05Java实现希尔排序
package com.atguigu.Sort; import java.util.Arrays; /** * 希尔排序 * @author shkstart * @create 2021 -10-07 17:17 */ public class ShellSort { public static void main(String[] args) { int[] arr = {8,9,1,7,2,3,5,4,6,0}; // int[] arr = new
2021-11-05 19:12:04
70
原创 2021-11-05Java实现插入排序
package com.atguigu.Sort; import sun.java2d.pipe.AAShapePipe; import java.util.Arrays; /** * @author shkstart * @create 2021 -10-03 10:25 */ public class InsertSort { public static void main(String[] args) { // int[] arr = {23,45,-4,15,
2021-11-05 19:11:09
96
原创 2021-11-05Java实现选择排序
package com.atguigu.Sort; import java.util.Arrays; /** * 选择排序 * @author shkstart * @create 2021 -09-30 14:03 */ public class SelectSort { public static void main(String[] args) { // int[] arr = {101,34,119,1,123,376}; // 创建要给80000个数
2021-11-05 19:09:56
60
原创 2021-11-05 Java冒泡排序的实现
package com.atguigu.Sort; import java.util.Arrays; /** * 冒泡排序 * @author shkstart * @create 2021 -09-29 20:52 */ public class BubbleSortTest { public static void main(String[] args) { // int[] arr ={10,3,20,-1,9}; //// int[] arr ={-1
2021-11-05 19:01:43
55
原创 Java实现合并俩个有序单链表,合并后的链表仍然有序
package com.yyh; /** * @author yyh * @create 2021-04-11 17:38 */ public class SLinkList { public static void main(String[] args) { SingleLinkedList s1 = new SingleLinkedList(); SingleLinkedList s2 = new SingleLinkedList(); H
2021-10-30 13:54:50
190
原创 2021-10-25单链表相关代码及几道面试题代码
package LinkedList; import java.util.Stack; /** * * @author shkstart * @create 2021 -09-19 10:11 */ public class SingleLinkedListDemo { public static void main(String[] args) { //进行测试 //先创建节点 HeroNode hero1 = new HeroNode(
2021-10-25 23:23:08
49
转载 数组模拟循环队列
数组模拟循环队列的功能 package com.guigu.queue; import java.util.Scanner; /** * @author shkstart * @create 2021 -09-18 9:47 */ public class CircleArrayQueueDemo { public static void main(String[] args) { //测试 System.out.println("测试数组环形队列的案例~~
2021-10-24 23:23:19
87
原创 数组模拟队列(一次性队列)
使用数组模拟队列的功能 package com.guigu.queue; import java.util.Scanner; /** * @author shkstart * @create 2021 -09-18 7:21 */ public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueue Queue = new ArrayQueue(3); char key
2021-10-24 23:21:36
75
原创 2021-10-24稀疏数组
稀疏数组与原始数组转换 package sparsearrayArray; /** * @author shkstart * @create 2021 -09-16 20:07 */ public class SparsearrayTest { public static void main(String[] args) { //创建一个原始的二维数组 11*11 //0:表示没有棋子,1:表示黑子,2:表示白子 int[][] chessAr
2021-10-24 23:07:24
1074
原创 leetCode第141题--环形链表
给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部
2021-09-28 20:15:45
94
原创 递归-迷宫问题代码
package com.atguigu.recursion; /** * @author shkstart * @create 2021 -09-26 18:08 */ public class MiGong { public static void main(String[] args) { //先创建一个二维数组,模拟迷宫 int[][] map = new int[8][7]; for(int i = 0;i < 7;i++){
2021-09-27 07:16:11
86
原创 中缀转换后缀代码写计算器
下面跟着尚硅谷韩老师敲的将平常的四则运算中缀表达式转换为后缀表达式写的功能简单逆波兰 计算器 package com.atguigu.stack; import java.security.Key; import java.util.ArrayList; import java.util.List; import java.util.Stack; /** * @author shkstart * @create 2021 -09-25 8:14 */ public class PolandNota
2021-09-25 23:18:24
97
原创 极简计算器代码
计算器 //这里不知为何,有错误,没找到 下面展示一些 内联代码片。 public class CalculatorExer { public static void main(String[] args) { //根据前面老师的思路,完成表达式的运算 String expression = "37+6*2+2"; ArrayStack3 numStack = new ArrayStack3(10); ArrayStack3 oper
2021-09-24 21:33:53
66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人