搜索旋转排序数组

摘要: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O 阅读全文
posted @ 2020-03-18 23:25 PigDragon 阅读(189) 评论(0) 推荐(0) 编辑

下一个排列

摘要: 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2,1 → 阅读全文
posted @ 2020-03-18 22:25 PigDragon 阅读(249) 评论(0) 推荐(0) 编辑

实现 strStr()

摘要: 实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 阅读全文
posted @ 2020-03-14 22:10 PigDragon 阅读(141) 评论(0) 推荐(0) 编辑

移除元素

摘要: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1:给定 nums = [3,2,2 阅读全文
posted @ 2020-03-14 22:06 PigDragon 阅读(116) 评论(0) 推荐(0) 编辑

删除排序数组中的重复项

摘要: 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 阅读全文
posted @ 2020-03-10 23:34 PigDragon 阅读(931) 评论(0) 推荐(0) 编辑

两两交换链表中的节点

摘要: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例:给定 1->2->3->4, 你应该返回 2->1->4->3. 方法一: 递归 递归写法要观察本级递归的解决过程,形成抽象模型,因为递归本质就是不断重复相同的事情。而不是 阅读全文
posted @ 2020-03-10 21:37 PigDragon 阅读(400) 评论(0) 推荐(0) 编辑

括号生成

摘要: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"] 方法一:深度优先遍历 我们以 n = 2 为例,画树形结构图。方法是 阅读全文
posted @ 2020-03-10 17:32 PigDragon 阅读(261) 评论(0) 推荐(0) 编辑

合并两个有序链表

摘要: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 方法一: 思路: 递归法来合并连个有序的链表可以按照如下定义来执行: if(list1[0]->val < list2[0 阅读全文
posted @ 2020-03-09 22:32 PigDragon 阅读(286) 评论(0) 推荐(0) 编辑

有效的括号

摘要: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: tr 阅读全文
posted @ 2020-03-09 21:50 PigDragon 阅读(158) 评论(0) 推荐(0) 编辑

删除链表的倒数第N个节点

摘要: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5. 方法一: 希望是O(N)的算法,通过一次遍历来解决问题. 首先题目中说了,要删除的是倒数第N个节点,那我就 阅读全文
posted @ 2020-03-08 22:29 PigDragon 阅读(337) 评论(0) 推荐(0) 编辑