疯狂的兔子

GitHub主页:https://github.com/TimeIvyace

LeetCode-31.下一个排列

题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 以下是一些例子,输入位于左侧列,其相应输出位于右侧列。 1,2,3 → 1,3,2 3,2...

2019-05-17 10:44:16

阅读数 6

评论数 0

LeetCode-18.四数之和

题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:答案中不可以包含重复的四元组。 示例: 给定数组 nums...

2019-05-16 19:47:17

阅读数 3

评论数 0

LeetCode-16.最接近的三数之和

题目 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target ...

2019-05-16 18:24:29

阅读数 4

评论数 0

LeetCode-15.三数之和

题目 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的...

2019-05-16 10:33:09

阅读数 11

评论数 0

LeetCode-11.盛最多水的容器

题目 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 ...

2019-05-15 18:54:44

阅读数 8

评论数 0

LeetCode-5.最长回文子串

题目 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2: 输入: “cbbd” 输出: “bb” 解题思路—中心扩展:遍历字符串,以每一个字符串...

2019-05-15 15:10:05

阅读数 9

评论数 0

Manacher算法解决最长回文子串问题-Java版

Manacher算法解决最长回文子串问题 最长回文子串问题,就是给定一个字符串,求出字符串中最长回文子串的长度。回文串就是从头到尾遍历和从尾到头遍历是一模一样的。 暴力求解,把字符串所有子串都找出来,再挨个判断是否为回文子串,再记录最长的长度,这个方法当然是可以的,但是复杂度太高!不推荐! 所以设...

2019-05-15 00:21:04

阅读数 15

评论数 0

KMP算法基础版和进阶版简单解释-Java版

KMP算法基础版和进阶版简单解释KMP算法KMP算法基础版如何理解getNext中的k = next[k]KMP算法基础版代码KMP算法改进版KMP算法改进版代码 KMP算法 比较口语化的写了为什么k = next[k]和改进版中next[j] = next[k],以及代码理解中的注意点。 KMP...

2019-05-14 16:06:58

阅读数 44

评论数 0

十大排序算法汇总-Java版(由小到大排序)

十大排序算法汇总-Java版(由小到大排序)1.冒泡排序 — O(N^2)2.选择排序 — O(N^2)3.插入排序 — O(N^2)4.归并排序 — O(NlogN)5.快速排序 — O(NlogN)6.堆排序 — O(NlogN)7.希尔排序 — O(NlogN)8.计数排序 — O(N+K)...

2019-05-13 19:59:18

阅读数 17

评论数 0

动态规划示例汇总-Java版(组合硬币、跳台阶、最小路径和、最长递增子序列、最长公共子序列、01背包问题、最小编辑代价)

动态规划算法示例汇总-Java版组合硬币Java解题—暴力搜索Java解题—记忆搜索Java解题—动态规划(两种写法)跳台阶Java解题—暴力递归Java解题—动态规划矩阵最小路径和Java解题—动态规划最长递增子序列Java解题—动态规划字符串最长公共子序列Java解题—动态规划0-1背包问题J...

2019-05-12 23:31:40

阅读数 46

评论数 0

LeetCode-4.寻找两个有序数组的中位数

题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数...

2019-05-07 20:25:26

阅读数 33

评论数 0

LeetCode-3.无重复字符的最长子串

题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其...

2019-05-07 10:22:56

阅读数 18

评论数 0

LeetCode-2.两数相加

题目 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -&a...

2019-05-06 20:51:30

阅读数 22

评论数 0

剑指Offer-机器人的运动范围

题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3...

2019-05-06 17:47:50

阅读数 73

评论数 0

剑指Offer-矩阵中的路径

题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e ...

2019-05-06 13:49:40

阅读数 63

评论数 0

剑指Offer-滑动窗口的最大值

题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4...

2019-05-06 00:03:30

阅读数 16

评论数 0

剑指Offer-数据流中的中位数

题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 解题...

2019-05-05 16:14:27

阅读数 28

评论数 0

剑指Offer-二叉搜索树的第k个结点

题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如,(5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 何为二叉搜索树?树中每一个结点的值都大于左子结点且小于右子结点。所以若中序遍历二叉搜索树,得到的结果就是由小到大排序的有序数列。 解题思路—中序遍历-递归版...

2019-05-05 11:24:08

阅读数 15

评论数 0

剑指Offer-序列化二叉树

题目描述 请实现两个函数,分别用来序列化和反序列化二叉树。 示例 二叉树序列化 {8,4,#,3,#,2} 反序列化 序列化指的是遍历二叉树为字符串;反序列化指的是依据字符串重新构造成二叉树。下面两种方法,使用ArrayList层次遍历是完全符合二叉树层次序列化示例,即示例输入。而递归的方法...

2019-04-30 11:18:42

阅读数 34

评论数 0

剑指Offer-把二叉树打印成多行

题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路—使用ArrayList层次遍历:这题就是剑指Offer—按之字形顺序打印二叉树的简化版。比较基础的就是用ArrayList、Stack或者Queue进行层次遍历。使用size记录每一层的结点个数,依次分层输出。 ...

2019-04-29 16:53:40

阅读数 23

评论数 0

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