自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 LeetCode_数据结构_最长回文串

最长回文串给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的回文串 。在构造过程中,请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。示例 1:输入:s = “abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。示例 2:输入:s = “a”输入:1示例 3:输入:s = “bb”输入: 2(上述题目来源于LeetCode)解法一(哈希表)class Solution { publ

2022-03-13 23:51:07 791

原创 LeetCode_数据结构_字符串相加

字符串相加给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。示例 1:输入:num1 = “11”, num2 = “123”输出:“134”示例 2:输入:num1 = “456”, num2 = “77”输出:“533”示例 3:输入:num1 = “0”, num2 = “0”输出:“0”(上述题目来源于LeetCode)解法

2022-03-13 23:48:37 191

原创 LeetCode_数据结构_和为k的子数组

和为k的子数组给你一个整数数组 nums 和一个整数 k ,请你统计并返回该数组中和为 k 的连续子数组的个数。示例 1:输入:nums = [1,1,1], k = 2输出:2(上述题目来源于LeetCode)解法一(暴力解法1)class Solution { public int subarraySum(int[] nums, int k) { //暴力解法 int count = 0; int n = nums.length;

2022-03-13 19:48:30 640

原创 LeetCode_数据结构_除自身以外数组的乘积

除自身以外数组的乘积给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在 O(n) 时间复杂度内完成此题。示例 1:输入: nums = [1,2,3,4]输出: [24,12,8,6]示例 2:输入: nums = [-1,1,0,-3,3]输出: [0,0,9,0,0](上述题

2022-03-13 19:11:49 250

原创 LeetCode_数据结构_递增的三元子序列

递增的三元子序列给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例 2:输入:nums = [5,4,3,2,1]输出:fal

2022-03-13 18:57:31 1448

原创 LeetCode_数据结构_无重叠区间

无重叠区间给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。示例 1:输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: intervals = [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:

2022-03-13 18:48:25 876

原创 LeetCode_数据结构_搜索二维矩阵II

搜索二维矩阵II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例 1:输入: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示例 2:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19

2022-03-13 18:42:38 734

原创 LeetCode_数据结构_螺旋矩阵

螺旋矩阵给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]](上述题目来源于LeetCode)解法class Solution { public int[][] generateMatrix(int n) { //用边界来限制元素按顺时针排列 int

2022-03-13 18:38:50 495

原创 LeetCode_数据结构_旋转图像

旋转图像给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,

2022-03-08 15:31:30 62

原创 LeetCode_数据结构_设计哈希映射

###设计哈希映射不使用任何内建的哈希表库设计一个哈希映射(HashMap)。实现 MyHashMap 类:MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中,则更新其对应的值 value 。int get(int key) 返回特定的 key 所映射的 value ;如果映射中不包含 key 的映射,返回 -1 。void remove(key) 如果

2022-03-08 15:25:47 342

原创 LeetCode_数据结构_合并区间

合并区间以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1,4]

2022-03-07 16:49:22 391

原创 LeetCode_数据结构_杨辉三角Ⅱ

杨辉三角II给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: rowIndex = 3输出: [1,3,3,1]示例 2:输入: rowIndex = 0输出: [1]示例 3:输入: rowIndex = 1输出: [1,1](上述题目来源于LeetCode)解法class Solution { public List<Integer> getRow(int

2022-03-07 16:33:17 242

原创 LeetCode_算法入门_图像渲染

图像渲染有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 newColor 。你应该从像素 image[sr][sc] 开始对图像进行 上色填充 。为了完成 上色工作 ,从初始像素开始,记录初始坐标的 上下左右四个方向上 像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应 四个方向上 像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值

2022-03-06 21:02:28 6198

原创 LeetCode_算法入门_字符串的排列

字符串的排列给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。换句话说,s1 的排列之一是 s2 的 子串 。示例 1:输入:s1 = “ab” s2 = “eidbaooo”输出:true解释:s2 包含 s1 的排列之一 (“ba”).示例 2:输入:s1= “ab” s2 = “eidboaoo”输出:false(上述题目来源于LeetCode)解法(滑动窗口)class Solution {

2022-03-06 19:48:50 312

原创 LeetCode_算法入门_无重复字符的最长子串

无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“p

2022-03-04 16:31:48 58

原创 LeetCode_算法入门_删除链表的倒数第N个结点

删除链表的倒数第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](上述题目来源于LeetCode)解法一(两次遍历)/** * Definition for singly-linked list. * public class ListN

2022-03-04 16:18:39 201

原创 LeetCode_算法入门_链表的中间结点

链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.n

2022-03-04 16:09:52 60

原创 LeetCode_算法入门_反转字符串中的单词

反转字符串中的单词给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入:s = “Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”示例 2:输入: s = “God Ding”输出:“doG gniD”(上述题目来源于LeetCode)解法class Solution { public String reverseWords(String s) {

2022-03-01 16:23:25 7214

原创 二分查找实现

二分查找代码public class BinarySearch { public int binarySearch(int[] list,int key){ int low = 0; int high = list.length-1; int middle = 0; if(key < list[low] || key > list[high]){ return -1; }

2022-02-28 16:22:31 49

原创 快速排序递归实现

快速排序快速排序的思想就是先定义第一个元素为基准数,左右指针分别向右向左移动,直到右指针找到一个元素比基准数小,并且左指针找到一个元素比基准数大,此时交换左右指针当前指向的元素。继续移动,直到左指针与右指针重合,此时将基准数与指针重合的元素交换。如此,第一轮排序结束。再以排序好的这个数为分界线,分为左右两边数组元素,再分别以此方法递归。代码public class QuickSort { public void quickSort(int[] list,int low,int high){

2022-02-28 16:13:41 314

原创 LeetCode_数据结构_颜色分类

颜色分类给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2](上述题目来源于LeetCode)解法一(冒泡排序)class Solution

2022-02-28 16:03:40 203

原创 LeetCode_数据结构_三数之和

三数之和给你一个包含 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]输出:[](上述题目来源于LeetCode)解法一class Solution {

2022-02-28 15:38:49 73

原创 LeetCode_算法入门_两数之和 II - 输入有序数组

两数之和 II - 输入有序数组给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。你可以假设

2022-02-28 15:20:09 121

原创 LeetCode_数据结构_多数元素

多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2(上述题目来源于LeetCode)解法一(哈希表)class Solution { public int majorityElement(int[] nums) { //运用哈希表,将数组中每一个数字以

2022-02-25 17:09:55 49

原创 LeetCode_数据结构_只出现一次的数字

只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4(上述题目来源于LeetCode)解法一(哈希表)class Solution { public int singleNumber(int[] nums) { //将数组中的数据放到哈希表中,通过key找value,如果value等于1,则符合题目要求

2022-02-25 16:46:57 486

原创 LeetCode_数据结构入门_有效的括号

有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true(上述题目来源于LeetCode

2022-01-29 22:45:48 564

原创 LeetCode_算法入门_移动零

移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:输入: nums = [0]输出: [0](上述题目来源于LeetCode)方法一(双指针):class Solution { public void moveZeroes(int[] nums) { //数组长度

2022-01-29 20:55:50 605

原创 java中复制数组的四种方法

java中复制数组的四种方法1.Arrays类的copyOf()方法语法格式:Arrays.copyOf(dataType[] srcArray,int length);其中,srcArray表示要进行复制的数组,length表示复制后新数组的长度。使用此方法复制数组时,默认从原数组的第一个元素,即下标为0的元素开始复制,目标数组的长度为length。如果length大于原数组的长度,则新数组中多余的元素以相应的默认值代替填充;如果length小于原数组的长度,则在新数组中只复制length个元

2022-01-27 22:25:10 5509

原创 LeetCode_算法入门_轮转数组

轮转数组给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右轮转 1 步: [99

2022-01-27 21:40:34 6404

原创 LeetCode_数据结构入门_删除排序链表中的重复元素

删除排序链表中的重复元素给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例 1:输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3](上述题目来源于LeetCode)解法(一次循环):/** * Definition for singly-linked list. * public class ListNode { * int val; *

2022-01-27 19:27:01 290

原创 LeetCode_数据结构入门_反转链表

反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[](上述题目来源与LeetCode)解法(递归反转链表):/** * Definition for singly-linked list. * public class ListNode { * int val; *

2022-01-27 16:49:06 370

原创 LeetCode_算法入门_有序数组的平方

有序数组的平方给你一个按 非递减顺序 排序的整数数组 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](上述题目来源于LeetCode)方法一(先平方再排序)class Solut

2022-01-21 16:44:47 63

原创 LeetCode_数据结构入门_移除链表元素

移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[](上述题目来源于LeetCode)解法/** * Definition for sin

2021-12-12 21:38:12 46

原创 LeetCode_数据结构入门_合并两个有序链表

合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0](上述题目来源于LeetCode)解法(递归的方法,需要哨兵节点和一个指针)/** * Definition for singly-linked li

2021-12-12 19:53:30 51

原创 LeetCode_数据结构入门_环形链表

环形链表给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:

2021-12-12 19:44:24 81

原创 LeetCode_数据结构入门_有效的字母异位词

有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false(上述题目来源于LeetCode)解法一(使用标记数组)class Solution { public boolean isAnagra

2021-12-12 17:30:30 166

原创 LeetCode_数据结构入门_赎金信

赎金信给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:输入:ransomNote = “a”, magazine = “b”输出:false示例 2:输入:ransomNote = “aa”, magazine = “ab”输出:false示例 3:输入:ransomN

2021-12-12 17:22:09 164

原创 LeetCode_数据结构入门_字符串中的第一个唯一字符

字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2(上述题目来源于LeetCode)解法一class Solution { public int firstUniqChar(String s) { //将字符串转换为数组 char s1[] = s.toCharArray(); //定义一个

2021-12-12 17:16:45 790

原创 LeetCode_数据结构入门_矩阵置零

矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]](上述题目来源于LeetCode)首先,什么是原地算法呢?百度的

2021-12-12 16:55:27 200

原创 LeetCode_数据结构入门_有效的数独

有效的数独请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。空白格用 ‘.’ 表示。示例 1:输入:board =[[“5”,“3”,".",".",“7”,".",".",".","

2021-12-04 19:17:52 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除