寻找阵列的中心索引
给你一个整数阵列 nums ,请计算阵列的 中心下标 , 阵列 中心下标 是阵列的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和, 如果中心下标位于阵列最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素,这一点对于中心下标位于阵列最右端同样适用, 如果阵列有多个中心下标,应该回传 最靠近左边 的那一个,如果阵列不存在中心下标,回传 -1 , 示例 1: 输入:nums = [1, 7, 3, 6, 5, 6] 输入:nums = [1, 2, 3] 输入:nums = [2, 1, -1] 提示: 1 <= nums.length <= 104 -1000 <= nums[i] <= 1000 |
搜索插入位置
给定一个排序阵列和一个目标值,在阵列中找到目标值,并回传其索引,如果目标值不存在于阵列中,回传它将会被按顺序插入的位置, 请必须使用时间复杂度为 O(log n) 的算法,
示例 1: 输入: nums = [1,3,5,6], target = 5 输入: nums = [1,3,5,6], target = 2 输入: nums = [1,3,5,6], target = 7 输入: nums = [1,3,5,6], target = 0 输入: nums = [1], target = 0 提示: 1 <= nums.length <= 104 |
合并区间
以阵列 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] ,请你合并所有重叠的区间,并回传一个不重叠的区间阵列,该阵列需恰好覆写输入中的所有区间,
示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]] 输入:intervals = [[1,4],[4,5]] 提示: 1 <= intervals.length <= 104 |
旋转矩阵
给你一幅由 N × N 矩阵表示的影像,其中每个像素的大小为 4 字节,请你设计一种算法,将影像旋转 90 度, 不占用额外存储器空间能否做到?
示例 1: 给定 matrix = 原地旋转输入矩阵,使其变为: 给定 matrix = 原地旋转输入矩阵,使其变为: |
零矩阵
撰写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零,
示例 1: 输入: 输入: |
对角线遍历
给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个阵列回传这个矩阵中的所有元素,
示例 1:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]] 输入:mat = [[1,2],[3,4]] 提示: m == mat.length |
最长公共前缀
撰写一个函式来查找字符串阵列中的最长公共前缀, 如果不存在公共前缀,回传空字符串 "",
示例 1: 输入:strs = ["flower","flow","flight"] 输入:strs = ["dog","racecar","car"] 提示: 1 <= strs.length <= 200 |
最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串,
示例 1: 输入:s = "babad" 输入:s = "cbbd" 输入:s = "a" 输入:s = "ac" 提示: 1 <= s.length <= 1000 |
翻转字符串里的单词
给你一个字符串 s ,逐个翻转字符串中的所有 单词 , 单词 是由非空格字符组成的字符串,s 中使用至少一个空格将字符串中的 单词 分隔开, 请你回传一个翻转 s 中单词顺序并用单个空格相连的字符串, 说明: 输入字符串 s 可以在前面、后面或者单词间包含多余的空格, 示例 1: 输入:s = "the sky is blue" 输入:s = " hello world " 输入:s = "a good example" 输入:s = " Bob Loves Alice " 输入:s = "Alice does not even like bob" 提示: 1 <= s.length <= 104 进阶: 请尝试使用 O(1) 额外空间复杂度的原地解法, |
实作strStr()
实作 strStr() 函式, 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始),如果不存在,则回传 -1 ,
说明: 当 needle 是空字符串时,我们应当回传什么值呢?这是一个在面试中很好的问题, 对于本题而言,当 needle 是空字符串时我们应当回传 0 ,这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符,
示例 1: 输入:haystack = "hello", needle = "ll" 输入:haystack = "aaaaa", needle = "bba" 输入:haystack = "", needle = "" 提示: 0 <= haystack.length, needle.length <= 5 * 104 |
反转字符串
撰写一个函式,其作用是将输入的字符串反转过来,输入字符串以字符阵列 s 的形式给出, 不要给另外的阵列分配额外的空间,你必须原地修改输入阵列、使用 O(1) 的额外空间解决这一问题,
示例 1: 输入:s = ["h","e","l","l","o"] 输入:s = ["H","a","n","n","a","h"] |
阵列拆分I
给定长度为 2n 的整数阵列 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大, 回传该 最大总和 ,
示例 1: 输入:nums = [1,4,3,2] 输入:nums = [6,2,6,5,1,2] |
两数之和II-输入有序阵列
给定一个已按照 非递减顺序排列 的整数阵列 numbers ,请你从阵列中找出两个数满足相加之和等于目标数 target , 函式应该以长度为 2 的整数阵列的形式回传这两个数的下标值,numbers 的下标 从 1 开始计数 ,所以答案阵列应当满足 1 <= answer[0] < answer[1] <= numbers.length , 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素, 输入:numbers = [2,7,11,15], target = 9 输入:numbers = [2,3,4], target = 6 输入:numbers = [-1,0], target = -1 提示: 2 <= numbers.length <= 3 * 104 |
移出元素
给你一个阵列 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并回传移除后阵列的新长度, 不要使用额外的阵列空间,你必须仅使用 O(1) 额外空间并 原地 修改输入阵列, 元素的顺序可以改变,你不需要考虑阵列中超出新长度后面的元素,
说明: 为什么回传数值是整数,但输出的答案是阵列呢? 请注意,输入阵列是以「参考」方式传递的,这意味着在函式里修改输入阵列对于呼叫者是可见的, 你可以想象内部操作如下: // nums 是以“参考”方式传递的,也就是说,不对实参作任何拷贝 // 在函式里修改输入阵列对于呼叫者是可见的, 示例 1: 输入:nums = [3,2,2,3], val = 3 输入:nums = [0,1,2,2,3,0,4,2], val = 2 |
最大连续1的个数
给定一个二进制阵列, 计算其中最大连续 1 的个数,
示例: 输入:[1,1,0,1,1,1] 提示: 输入的阵列只包含 0 和 1 , |
长度最小的子阵列
给定一个含有 n 个正整数的阵列和一个正整数 target , 找出该阵列中满足其和 ≥ target 的长度最小的 连续子阵列 [numsl, numsl+1, ..., numsr-1, numsr] ,并回传其长度,如果不存在符合条件的子阵列,回传 0 ,
示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输入:target = 4, nums = [1,4,4] 输入:target = 11, nums = [1,1,1,1,1,1,1,1] 提示: 1 <= target <= 109 |
杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行, 在「杨辉三角」中,每个数是它左上方和右上方的数的和, 示例 1: 输入: numRows = 5 输入: numRows = 1 提示:
|
杨辉三角II
在「杨辉三角」中,每个数是它左上方和右上方的数的和,
示例 1: 输入: rowIndex = 3 输入: rowIndex = 0 输入: rowIndex = 1 提示: 0 <= rowIndex <= 33 进阶: 你可以优化你的算法到 O(rowIndex) 空间复杂度吗? |
反转字符串中的单词III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序,
示例: 输入:"Let's take LeetCode contest" 提示: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格, |
寻找旋转排序阵列中的最小值
已知一个长度为 n 的阵列,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入阵列,例如,原阵列 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 给你一个元素值 互不相同 的阵列 nums ,它原来是一个升序排列的阵列,并按上述情形进行了多次旋转,请你找出并回传阵列中的 最小元素 ,
示例 1: 输入:nums = [3,4,5,1,2] 输入:nums = [4,5,6,7,0,1,2] 输入:nums = [11,13,15,17] 提示: n == nums.length |
洗掉排序阵列中的重复项
给你一个有序阵列 nums ,请你 原地 洗掉重复出现的元素,使每个元素 只出现一次 ,回传洗掉后阵列的新长度, 不要使用额外的阵列空间,你必须在 原地 修改输入阵列 并在使用 O(1) 额外空间的条件下完成,
说明: 为什么回传数值是整数,但输出的答案是阵列呢? 请注意,输入阵列是以「参考」方式传递的,这意味着在函式里修改输入阵列对于呼叫者是可见的, 你可以想象内部操作如下: // nums 是以“参考”方式传递的,也就是说,不对实参做任何拷贝 // 在函式里修改输入阵列对于呼叫者是可见的, 输入:nums = [1,1,2] 输入:nums = [0,0,1,1,1,2,2,3,3,4] 提示: 0 <= nums.length <= 3 * 104 |
移动零
给定一个阵列 nums,撰写一个函式将所有 0 移动到阵列的末尾,同时保持非零元素的相对顺序, 示例: 输入: [0,1,0,3,12] 必须在原阵列上操作,不能拷贝额外的阵列, |
0 评论