Java_数据结构
文章平均质量分 84
从leetcode上完成一些题目,将一些题解分享到本平台
KeinoJust
敷衍别人就是敷衍自己,如果对自己的输出尚且不认真,那么是没有人愿意停下脚步去欣赏的,你若盛开,蝴蝶自来~
展开
-
含有所有字符的最短字符串 | 循序递进---@二十一画
含有所有字符的最短字符串题目:含有所有字符的最短字符串分析:相似题目:拆解关键词:优先考虑:想法:代码:滑动窗口:总结:题目:含有所有字符的最短字符串给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 “” 。如果 s 中存在多个符合条件的子字符串,返回任意一个。注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。输入:s = "ADOBECODEBANC", t = "AB原创 2022-01-11 15:15:12 · 687 阅读 · 0 评论 -
不含重复字符的最长子字符串 | 循序递进---@二十一画
不含重复字符的最长子字符串题目:分析:相似题目:拆解关键词:优先考虑:想法:滑动窗口V1:滑动窗口V2:代码:滑动窗口V1:滑动窗口V2:总结:题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子字符串是 "abc",所以其长度为 3。输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子字符串是 "b",所以其长度为 1。输入: s = "pwwkew"原创 2022-01-10 17:15:57 · 659 阅读 · 0 评论 -
字符串中的所有变位词 | 循序递进---@二十一画
题目:给定两个字符串 s 和 p,找到 s 中所有 p 的 变位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。变位词 指字母相同,但排列不同的字符串。输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的变位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的变位词。输入: s = "abab", p = "ab"输出: [0,1,2]解释:起始索引等于 0 的原创 2022-01-10 09:36:09 · 469 阅读 · 0 评论 -
字符串中的变位词 | 循序递进---@二十一画
字符串中的变位词题目:分析:拆解关键词:想法:1、暴力法:2、滑动窗口V13、滑动窗口V24、滑动窗口V3代码:第一版:滑动窗口V1第二版:滑动窗口V2 + 数组下标代值【我随便起的方法,忘记这个方法叫什么名字了????】第三版:滑动窗口V3 + 单变量对比数组总结:题目:给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。示例 1:输入: s1 = "ab" s2 = "eidbaooo"输出:原创 2022-01-06 14:24:06 · 888 阅读 · 1 评论 -
二维子矩阵的和 | 循序递进---@二十一画
二维子矩阵的和题目:分析:拆解关键词:想法:代码:第一版:暴力循环第二版:切割矩阵--前缀和总结:题目:给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2)原创 2022-01-04 10:59:22 · 612 阅读 · 1 评论 -
左右两边子数组的和相等 | 循序递进---@二十一画
左右两边子数组的和相等题目:分析:拆解关键词:想法:代码:第一版:找规律总结:题目:给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1,7,3,6,5,原创 2021-12-30 14:43:31 · 288 阅读 · 0 评论 -
0和1个数相同的子数组 | 循序递进---@二十一画
0和1个数相同的子数组题目:分析:拆解关键词:想法:解释:【暴力破解法】【前缀和】【滑动窗口法】代码:第一版:暴力破解第二版:前缀和总结:题目:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数原创 2021-12-28 17:05:53 · 520 阅读 · 0 评论 -
和为K的子数组 | 循序递进---@二十一画
和为K的子数组题目:[和为 k 的子数组](https://leetcode-cn.com/problems/QTMn0o/)分析:拆解关键词:想法:解释:【暴力破解法】【前缀和】【滑动窗口法】代码:第一版:暴力破解第二版:前缀和总结:题目:和为 k 的子数组给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2解释: 此题 [1,1] 与 [1,1] 为两种不同的情况示例 2 :输入:原创 2021-12-27 14:53:06 · 418 阅读 · 0 评论 -
乘积小于K的子数组 | 循序递进---@二十一画
乘积小于K的子数组题目:分析:拆解关键词:想法:解释:代码:第一版:暴力破解第二版:滑动窗口第三版:滑动窗口优化代码总结:题目:给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8 个乘积小于 100 的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘原创 2021-12-24 15:18:30 · 642 阅读 · 0 评论 -
和大于等于target的最短子数组 | 循序递进---@二十一画
和大于等于target的最短子数组题目:分析:拆解关键字:想法:解释:代码:第一版:暴力破解第二版:前缀和 + 二分查找第三版:滑动窗口总结:题目:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:原创 2021-12-22 18:34:08 · 1165 阅读 · 0 评论 -
排序数组中两个数字之和 | 循序递进---@二十一画
排序数组中两个数字之和题目:分析:代码:第一版:暴力破解第二版:Hash法第三版:双指针法总结:题目:给定一个包含 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]输出:[]原创 2021-12-21 14:45:29 · 745 阅读 · 0 评论 -
排序数组中的两个数字之和 | 循序递进---@二十一画
题目:给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 ,所以答案数组应当满足 0 <= answer[0] < answer[1] < numbers.length 。假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。示例 1:输入:numbers = [1,2,4,6,10], ta原创 2021-12-20 17:29:13 · 568 阅读 · 0 评论 -
两数之和 | 循序递进---@二十一画
两数之和1 问题描述2 问题分析2.1 方法选择2.2 细节剖析3 代码实现3.1 代码分析1 问题描述2 问题分析首先两数之和,拿到题目之后大致上有三种思路可以想到。1⃣️全局排序+双指针夹逼。2⃣️使用hash结构,key存储值,value存储对应下标位置。一次循环中将全部元素插入hash结构,二次循环进行寻找符合i+j=target的i和j的对应下标并返回。3⃣️还是hash结构,在第一次循环中就开始一边插入元素,一遍进行寻找符合条件的值。2.1 方法选择方法1⃣️在这道题中全局排序原创 2021-07-04 20:55:42 · 146 阅读 · 0 评论 -
单词长度的最大乘积 | 循序递进---@二十一画
题目:给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。示例 1:输入: words = ["abcw","baz","foo","bar","fxyz","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "fxyz"。它们不包含相同字符,且长度的乘积最大。示例 2:输入: words = ["a","原创 2021-12-18 10:04:43 · 268 阅读 · 0 评论 -
只出现一次的数字 | 循序递进---@二十一画
只出现一次的数字题目:分析:代码:第一版:Map实现第二版:技巧实现总结:题目:给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,100]输出:100提示:1 <= nums.length <= 3 * 104-231 <= nums[i] <= 231 -原创 2021-12-16 18:58:35 · 194 阅读 · 0 评论 -
前 n 个数字二进制中 1 的个数 | 循序递进---@二十一画
前 n 个数字二进制中 1 的个数题目:分析:代码:第一版:暴力法第二版:`Brian Kernighan` 算法第三版:【动态规划解法】第四版:【奇偶特性--动态规划】总结:题目:给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。示例 1:输入: n = 2输出: [0,1,1]解释: 0 --> 01 --> 12 --> 10示例 2:输入: n = 5输出: [0,1,1,2,1,2]解释:0原创 2021-12-15 16:13:53 · 877 阅读 · 0 评论 -
整数除法 | 循序递进---@二十一画
整数除法 | 循序递进---@二十一画原创 2021-12-08 17:14:20 · 428 阅读 · 0 评论 -
二进制加法 | 循序递进---@二十一画
题目描述:二进制加法给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "10"输出: "101"示例 2:输入: a = "1010", b = "1011"输出: "10101" 提示:每个字符串仅由字符 '0' 或 '1' 组成。1 <= a原创 2021-12-11 13:20:20 · 3533 阅读 · 0 评论