![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
与衫
这个作者很懒,什么都没留下…
展开
-
两数之和
题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target原创 2021-08-18 16:17:12 · 369 阅读 · 0 评论 -
DFS和BFS对图树遍历的解法(纯代码)
dfs和bfs对树图的遍历bfs对二叉树的遍历/** * 二叉树的遍历 */public class Test { static TreeNode root; static { //构造二叉树[6,2,8,0,4,7,9,null,null,3,5] root = new TreeNode(1); TreeNode node1 = new TreeNode(2); TreeNode node2 = new TreeN原创 2020-09-14 14:26:22 · 229 阅读 · 0 评论 -
实现strStr()
题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle =...原创 2019-03-23 12:56:36 · 177 阅读 · 0 评论 -
移除元素
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两...原创 2019-03-13 12:47:06 · 187 阅读 · 0 评论 -
快速排序
快速排序要理解快序排序首先要了解下荷兰国旗问题。荷兰国旗问题就是一个数组,要求根据某个值为标准,要求将数组的数小于这个值的放左边,等于的放中间,大于的放右边。快速排序就是在这个基础上,再进行排序。思路就是每次都将最右侧的数作为比较标准,然后得到中间等于这个数的区域的范围,然后依照这个范围就可以得到两边分别得到的两块大于和小于的区域,再递归依次重复操作。经典快排经典快排就是上面的思路,...原创 2019-03-13 12:02:00 · 198 阅读 · 0 评论 -
堆排序
堆的数据结构要明白堆排序,首先要了解堆的数据结构。堆的数据结构是完全二叉树,二叉树是左小右大,而完全二叉树分为两种:一是父节点下有两个子节点,或者没有子节点;二是父节点下从左到右依次补充节点。数组只要满足2i+1为左节点,2i+2为右节点就是完全二叉树。 大根堆: 父节点永远大于子节点,所以最后顶部一定是最大值 小根堆: 父节点永远小于子节点...原创 2019-03-13 11:12:11 · 242 阅读 · 0 评论 -
删除排序数组中的重复项
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 ...原创 2019-03-12 17:35:11 · 156 阅读 · 0 评论 -
合并两个有序链表
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解一public static class ListNode { int val; ListNode next; ...原创 2019-03-11 17:54:06 · 141 阅读 · 0 评论 -
最长公共前缀
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解一public String longestCo...原创 2019-03-07 20:36:02 · 597 阅读 · 0 评论 -
归并排序
归并排序归并排序是一个相当“稳定”的算法对于其它排序算法,比如希尔排序,快速排序和堆排序而言,这些算法有所谓的最好与最坏情况。而归并排序的时间复杂度是固定的。其实用到了分而治之的思想,将一个排序任务分割成N部分,各个部分排序后,再合并排序,O(NlogN)。将一个数组一直对半分,问题的规模就减小了,再重复进行这个过程,直到元素的个数为一个时,一个元素就相当于是排好顺序的。实现public...原创 2019-03-10 18:54:02 · 158 阅读 · 0 评论 -
整数反转
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解一 public ...原创 2019-03-04 20:35:52 · 141 阅读 · 0 评论 -
插入排序
插入排序插入排序就像打斗地主,以最左边的牌为参照,从右依次去和参考牌对比,然后插入到左侧的排序队列中。实际实现就是:比较两个相邻的数,把值大的放在右边,一直比较到下标为0的位置,其时间复杂度跟数据样本量有关,可能是O(N2)和O(N)。实现/** * 插入排序 */public class InsertSort { public static void main(Strin...原创 2019-03-09 09:40:30 · 118 阅读 · 0 评论 -
罗马数字转整数
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的...原创 2019-03-06 11:32:02 · 467 阅读 · 0 评论 -
回文数
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解法一...原创 2019-03-05 16:24:22 · 575 阅读 · 0 评论