自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天行九歌

Time to waste, not reduce efficiency

  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 leetcode147. 对链表进行插入排序

题目插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。实现/** * Definition for singly-linked list. * struct ListNode { * int val; * Li...

2019-08-30 17:24:20 108

原创 leetcode129. 求根到叶子节点数字之和

题目给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代...

2019-08-29 21:27:05 103

原创 leetcode 106. 从中序与后序遍历序列构造二叉树

题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7实现/** * Definition for a binary tre...

2019-08-29 21:24:07 331

原创 leetcode105. 从前序与中序遍历序列构造二叉树

题目根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7实现/** * Definition for a binary tree...

2019-08-29 21:22:30 142

原创 leetcode112. 路径总和

题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...

2019-08-29 21:20:18 99

原创 leetcode113. 路径总和 II

题目给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...

2019-08-29 21:18:44 83

原创 leetcode114. 二叉树展开为链表

题目给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 61 \ 2 \ 3 \ 4 \ 5 \ 6实现/** * Definition for a binary tree node. * st...

2019-08-29 21:15:38 181

原创 leetcode94. 二叉树的中序遍历

题目给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路参考【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法实现/** * Definition for a binary tree node. * struct...

2019-08-29 21:13:29 155

原创 leetcode144. 二叉树的前序遍历

题目给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路参考【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法实现/** * Definition for a binary tree node. * s...

2019-08-29 21:09:25 83

原创 leetcode145. 二叉树的后序遍历

题目给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路参考【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法实现/** * Definition for a binary tree node. * stru...

2019-08-29 21:07:12 160

原创 map、hash_map、unordered_map

基本定义map底层是用红黑树实现的,查找时间复杂度是O(log(n));hash_map底层是用hash表存储的,查询时间复杂度是O(1);unordered_map和hash_map基本一样,只是unordered_map已经加到C++11标准(编译时添加编译选项:–std=c++11),而hash_map未加入在C++11标准中。由于map使用红黑树实现,所以是有序存储的,因此map的...

2019-08-29 20:53:12 359

原创 strcpy和memcpy,memmove的区别

strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。char...

2019-08-29 15:16:45 306

原创 C++死锁

现象:程序夯住考虑方向:死循环:CPU100%死递归: 栈溢出死锁: CPU 0产生死锁的条件有四个:1.互斥条件:所谓互斥就是进程在某一时间内独占资源。2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。3.不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。只要打破四个必要条件之一就...

2019-08-23 14:29:55 164

转载 为什么参数从右到左进栈

了解函数调用,所涉及栈帧分配,见下图1:这个图也有意思,把函数调用之间的关系展示了出来。理论分析假设现在有函数f,固定参数m个,可变参数n(未知)个,假设所有参数都是32位整数,如果不是整数,也可以根据参数类型,推出参数地址,为了简单画图,在此使用整数。自右向左(逆变量声明顺序)那么调用栈图自右向左入栈的调用栈虽然不知道可变参数n的大小,但是,依然可以根据固定参数的大小m,找到可...

2019-08-22 22:14:02 765

原创 leetcode112. 路径总和

题目路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...

2019-08-20 14:51:26 94

原创 leetcode110. 平衡二叉树

题目给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] ...

2019-08-20 10:47:44 88

原创 leetcode109. 有序链表转换二叉搜索树

有序链表转换二叉搜索树给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9...

2019-08-16 16:36:10 119

原创 leetcode107. 二叉树的层次遍历 II

题目给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]思路1.分层遍历,控制两个计数器2.从底层向上层输出 vec.insert(vec.b...

2019-08-16 15:25:32 88

原创 leetcode66. 加一

题目给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路1...

2019-08-16 11:38:08 78

原创 常见海量数据问题及解决方案

题目问题一:现有海量日志数据,要提取出某日访问百度次数最多的那个IP(可以将题干简化,假设日志中仅包含IP数据,也就是说待处理的文件中包含且仅包含全部的访问IP,但内存空间有限,不能全部加载,假设只有512MB)解决方案:这是一道典型的分治思想的题目,这种问题处理起来套路比较固定,对于大部分的数据量比较大的前提的问题而言,分治都是一个可选的解决方案,但不一定是最优的,解决方法基本划分为三步走...

2019-08-15 23:20:18 624

原创 提高C++程序运行效率

一、尽量减少值传递,多用引用来传递参数。至于其中的原因,相信大家也很清楚,如果参数是int等语言自定义的类型可能能性能的影响还不是很大,但是如果参数是一个类的对象,那么其效率问题就不言而喻了。例如一个判断两个字符串是否相等的函数,其声明如下bool Compare(string s1, string s2)bool Compare(string *s1, string *s2)bool C...

2019-08-14 00:13:36 271

原创 leetcode53. 最大子序和

题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。实现class Solution {public: int maxSubArray(vector<int>& nums...

2019-08-13 23:42:17 100

原创 leetcode43. 字符串相乘

题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数...

2019-08-13 00:27:46 236

原创 C/C++ 内存对齐原则及作用

struct/class/union内存对齐原则有四个:1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/cl...

2019-08-13 00:07:25 217

原创 leetcode108 将有序数组转换为二叉搜索树

题目将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9/ /-10 5思路1.找到了根节点,...

2019-08-12 23:58:56 139

转载 leetcode4. 寻找两个有序数组的中位数

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

2019-08-12 23:20:49 185

原创 最短路径算法和维特比算法、HMM假设

最短路径计算分静态最短路计算和动态最短路计算。静态路径最短路径算法是外界环境不变,计算最短路径。主要有Dijkstra算法,A*(A Star)算法。 动态路径最短路是外界环境不断发生变化,即不能计算预测的情况下计算最短路。如在游戏中敌人或障碍物不断移动的情况下。典型的有D*算法Dijkstra算法Dijkstra算法求最短路径:Dijkstra算法是典型最短路算法,用于计算一个节点到其他...

2019-08-08 15:24:38 735

原创 leetcode14. 最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路1.最长公共前缀长度不超过最短字符串长度2.逐个...

2019-08-07 21:11:11 136

原创 leetcode80. 删除排序数组中的重复项 II

题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面...

2019-08-07 20:50:07 125

原创 leetcode26 删除排序数组中的重复项

删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例...

2019-08-07 20:41:35 110

原创 leetcode38. 报数

题目报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一...

2019-08-07 20:30:37 155

原创 leetcode35. 搜索插入位置

题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路数组...

2019-08-06 19:58:48 84

原创 grep、sed、awk

grep:正则查找,文本搜索工具sed:流编辑器,增删改查awk:处理文本的编程语言工具grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。来自: http://man.linuxde.net/grep...

2019-08-06 13:47:56 106

原创 leetcode47. 全排列 II

题目给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]思路1.递归回溯2.注意去重复3.类似leetcode46. 全排列实现class Solution {public: vector<vector<int&g...

2019-08-06 00:05:13 106

原创 leetcode39 组合总和

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[[7]...

2019-08-05 22:06:30 107

原创 leetcode1. 两数之和

题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路借用哈希m...

2019-08-05 21:25:21 79

原创 leetcode34. 在排序数组中查找元素的第一个和最后一个位置

题目给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], t...

2019-08-05 21:03:35 86

原创 leetcode160. 相交链表

题目编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。思路先移动较长的链表,让其和较短的链表保持相同长度实现/** * Definition for singly-linked list. * struc...

2019-08-05 00:25:15 80

原创 leetcode206 反转链表

题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路1.链表的问题注意画出草稿图,理清楚指针的操作步骤就可以了2.写递归程序最重要是把调用函数当做已经执行完了的返回值,然后需要做的后续工作,...

2019-08-05 00:09:56 108

原创 c++ 智能指针

智能指针在智能指针出现以前,我们通常使用 new 和 delete 来管理动态分配的内存,但这种方式存在几个常见的问题:1.忘记 delete 内存:会导致内存泄漏问题,且除非是内存耗尽否则很难检测到这种错误。2.使用已经释放掉的对象:如果能够记得在释放掉内存后将指针置空并在下次使用前判空,尚可避免这种错误。3.同一块内存释放两次:如果有两个指针指向相同的动态分配对象,则很容易发生这种错误...

2019-08-04 23:16:50 234

Java泛型的擦除与补偿

Java泛型擦除后的常用补偿方法

2016-04-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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