leetcode数据结构之数组与字符串
文章平均质量分 63
数组 是数据结构中的基本模块之一。
admite
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分割两个字符串得到回文串
给你两个字符串 a 和 b ,它们长度相同。请你选择一个下标,将两个字符串都在 相同的下标 分割开。由 a 可以得到两个字符串: aprefix 和 asuffix ,满足 a = aprefix + asuffix ,同理,由 b 可以得到两个字符串 bprefix 和 bsuffix ,满足 b = bprefix + bsuffix。请你判断 aprefix + bsuffix 或者 bprefix + asuffix 能否构成回文串。原创 2023-03-18 13:23:43 · 167 阅读 · 0 评论 -
2389. 和有限的最长子序列
给你一个长度为 n 的整数数组 nums ,和一个长度为 m 的整数数组 queries。返回一个长度为 m 的数组 answer ,其中 answer[i] 是 nums 中 元素之和小于等于 queries[i] 的 子序列 的 最大 长度。子序列 是由一个数组删除某些元素(也可以不删除)但不改变剩余元素顺序得到的一个数组。示例 1:输入:nums = [4,5,2,1], queries = [3,10,21]输出:[2,3,4]原创 2023-03-17 22:48:05 · 153 阅读 · 1 评论 -
删除排序数组中的重复项
题目描述题目来源于leetcode给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新原创 2020-07-26 20:32:36 · 173 阅读 · 0 评论 -
寻找旋转排序数组中的最小值
题目描述题目来源于leetcode假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0简单分析索引 i 从0开始,遍历整个数组,如果出现nums[i+1]<nums[i],说明nums[ i +1]就是最小值,如果遍历完原创 2020-07-26 20:15:35 · 209 阅读 · 0 评论 -
反转字符串中的单词 III
问题描述题目来源于leetcode给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。分析定义一个StirngBuffer来存储结果索引 i 从0开始,遍历整个字符串当遇到字母时,保存当前索引为 j ,然后继续向后遍历直到遇到空格,得到反转原创 2020-07-26 20:10:38 · 230 阅读 · 0 评论 -
杨辉三角
题目描述题目来源于leetcode给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]简单分析可以用递归来完成此题,第一行是特殊的,只有1个元素1从第二行开始,它的元素都是第一个是1,中间是上一行的第0,1元素之和、第1,2元素之和、第2,3元素之和…第n,n+1元素之和,n+1<上一层元素的个数原创 2020-07-26 18:39:33 · 141 阅读 · 0 评论 -
长度最小的子数组
题目描述题目来源于leetcode给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。简要分析暴力求解。从数组的每个索引开始,找到从当前索引 i 开始之后到索引 j 的值得和>=s,比较每个j-i+1的值,取最小。代码class Solutio原创 2020-07-26 18:14:47 · 218 阅读 · 0 评论 -
最大连续1的个数
题目描述题目来源于leetode给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。简要分析从索引为0开始遍历整个数组,遇到0,继续遍历;遇到1,保存此时的索引,得到从此时开始的后面的1的位数,比较大小。代码class Solution { public int findMa原创 2020-07-26 17:58:21 · 192 阅读 · 0 评论 -
移除元素
题目描述题目来源于leetcode给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。简要分析定义两个指针(索引),快指针fast,满指针slow,初始化都为0移动fast,当fast指向的元素是val时,继续移动fast;当fast指向的元素不为val,则将fast指向的元素赋值给slow指原创 2020-07-26 17:25:33 · 106 阅读 · 0 评论 -
翻转字符串里的单词
题目描述题目来源于leetcode给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “example good a”解释: 如果两个单词间有多余的空格,将反转后单词间的原创 2020-07-26 11:31:07 · 181 阅读 · 0 评论 -
最长回文子串
题目描述题目来源于leetcode给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”简要分析我们枚举所有的「回文中心」并尝试「扩展」,直到无法扩展为止,此时的回文串长度即为此「回文中心」下的最长回文串长度。我们对所有的长度求出最大值,即可得到最终的答案。回文中心有2种,一种是a型,另一种是aa型。分别比较这两种回文原创 2020-07-26 11:03:35 · 111 阅读 · 0 评论 -
最长公共前缀
题目描述题目来源于leetcode编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。简要分析找出最短字符串的长度 min定义List来存放公共前缀比较所有字符串的第0~min-1个字符是否相等,相等就存入Li原创 2020-07-26 10:47:28 · 137 阅读 · 0 评论 -
对角线遍历
题目描述题目来源于leetcode给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。示例:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,4,7,5,3,6,8,9]说明:给定矩阵中的元素总数不会超过 100000 。简要分析一共需要遍历M+N层,每一层的元素索引之和=层数。2种遍历方式,一种是右上,一种是左下,可以根据当前层数来判断选用那种方式。右原创 2020-07-26 10:36:19 · 773 阅读 · 0 评论 -
零矩阵
题目描述题目来源于leetcode编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]简要分析定义一个新的结果数组result[ ][ ],将初始数组的值复制进去。访原创 2020-07-26 10:06:08 · 748 阅读 · 0 评论 -
旋转矩阵
题目描述题目来源于leetcode给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]简要分析不难发现,新的到的矩阵result[j][l-1-i] = matrix[i][j];代码class Solution {原创 2020-07-26 09:58:14 · 155 阅读 · 0 评论 -
合并区间
题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。简要分析两个区间[a,b]、[c,d]可以合并说明b<c,并且合并完的结果是[a,b>d?b:d],原创 2020-07-26 09:21:39 · 207 阅读 · 0 评论 -
寻找数组的中心索引
题目描述题目来源于leetcode:https://leetcode-cn.com/explore/learn/card/array-and-string/198/introduction-to-array/770/给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例原创 2020-07-25 17:22:43 · 341 阅读 · 3 评论
分享