
C++
文章平均质量分 63
Lindsay.Lu丶
- find more, find yourself. -
展开
-
valgrind & 单例模式的自动释放(多线程)
单例模式,其中对象是由_pInstance指针来保存的,而在使用单例设计模式的过程中,也难免会遇到内存泄漏的问题。那么是否有一个方法,可以让对象自动释放,而不需要程序员自己手动去释放呢?——嵌套类。原创 2024-10-05 00:11:41 · 684 阅读 · 0 评论 -
vs下程序运行结果框闪退的三种解决方案
用VS写c/c++程序,运行结果框总是会一闪而退,根本看不到程序运行的结果,真是令人烦躁,那么现在,告诉大家三个解决方法方法一:在return 0;语句之前, 加上一个 getchar();语句, 如此,getchar会一直等待输入,程序运行结果框也就正常显示运行结果了。如下图所示:方法二:在程序末尾加上语句:system("pause");,再加上头...转载 2020-04-12 15:15:18 · 702 阅读 · 0 评论 -
【LeetCode】Validate Binary Search Tree 验证二叉查找树 - Medium+
验证二叉查找树 给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:节点的左子树中的值要严格小于该节点的值。 节点的右子树中的值要严格大于该节点的值。 左右子树也必须是二叉查找树。 一个节点的树也是二叉查找树。样例一个例子: 2 / \1 4 / \ 3 5上述这棵二叉树序列化为 {2,1,4,#,#,3,5}.标签 分治法 二叉树 递归原创 2017-10-25 00:54:28 · 762 阅读 · 0 评论 -
【LeetCode】Identical Binary Tree等价二叉树 - Easy+
等价二叉树 检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二原创 2017-10-15 19:54:56 · 367 阅读 · 0 评论 -
【LeetCode】二叉树的所有路径 - Easy(FB,Google)
二叉树的所有路径 给一棵二叉树,找出从根节点到叶子节点的所有路径。样例 给出下面这棵二叉树:1 / \ 2 3 \ 5 所有根到叶子的路径为:[ “1->2->5”, “1->3” ] 标签 二叉树 二叉树遍历 谷歌 脸书 相关题目 中等 二叉树具有相同值的最长路径/** * Definition of TreeNode: * pub原创 2017-10-15 18:58:15 · 322 阅读 · 0 评论 -
【LeetCode】Remove Nth Node From End of List 删除链表中倒数第n个节点- Easy +
删除链表中倒数第n个节点 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。注意事项 链表中的节点个数大于等于n样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.挑战 O(n)时间复杂度标签 两根指针 链表 相关题目 入门 链表的中点 41 % 容易 在O(1)时间复杂度删除链原创 2017-10-15 12:43:29 · 265 阅读 · 0 评论 -
【LeetCode】Binary Tree Leaf Sum - Easy
二叉树叶子节点之和 计算二叉树的叶子节点之和样例 1 / \ 2 3 / 4 的叶子节点之和为 7。标签 二叉树 二叉树遍历(1)Java//package BinaryTree;////public class TreeNode {// public int val;// public TreeNode left, right;//原创 2017-10-15 11:09:55 · 287 阅读 · 0 评论 -
【LeetCode】Invert Binary Tree 翻转二叉树 - Easy++
翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4挑战 递归固然可行,能否写个非递归的?(1)Java//Version 1 : Recursionpublic class InvertBinaryTree { /* * @param root: a TreeNod原创 2017-10-22 16:08:44 · 297 阅读 · 0 评论 -
【LeetCode】BinaryTreeLevelOrderTraversal_ii 二叉树的层次遍历 II
二叉树的层次遍历 II 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍历为:[ [15,7], [9,20], [3]]标签 队列 二叉树 二叉树遍历 宽原创 2017-10-22 14:40:48 · 254 阅读 · 0 评论 -
C++ STL之vector用法总结
介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后转载 2017-10-22 11:51:34 · 495 阅读 · 0 评论 -
【LeetCode】Minimum Depth Of Binary Tree二叉树的最小深度 - Easy
二叉树的最小深度 给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的最小深度为 2标签 二叉树 深度优先搜索(1)Javapackage BinaryTree;import java.uti原创 2017-10-21 19:49:31 · 243 阅读 · 0 评论 -
【LeetCode】 Maximum Depth of Binary Tree 二叉树的最大深度 - Easy
二叉树的最大深度 描述 笔记 数据 评测 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.标签 分治法 二叉树 递归 优步(1)Javaimport BinaryTree.TreeNode;// Version 1: Divide Conqu原创 2017-10-21 15:24:10 · 235 阅读 · 0 评论 -
【LeetCode】Binary Tree Postorder Traversal 二叉树的后序遍历 - Easy
样例 给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1] 挑战 你能使用非递归实现么?(1)Java(1)递归版//Version1: Recursion ①public class BinaryTreePostorderTraverse { /* * @param root: A Tree原创 2017-10-21 14:55:32 · 250 阅读 · 0 评论 -
【LeetCode】Construct Binary Tree From Inorder And Postorder Traversal 中序遍历和后序遍历树构造二叉树 - Medium
根据前序遍历和中序遍历树构造二叉树.注意事项 你可以假设树中不存在相同数值的节点样例给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \1 3(1)Javapublic class Solution { /* * @param inorder: A list of integers that inorder traversal of原创 2017-10-28 17:25:23 · 293 阅读 · 0 评论 -
【数据结构】二叉树前序、中序、后序遍历相互求法
根据前序、中序遍历,直接计算后序遍历的二叉树。(绕过生成二叉树的过程)/** 根据前序、中序遍历,直接计算后序遍历的二叉树。(绕过生成二叉树的过程) nLength: ①(首次)前序/中序遍历的char[](存放二叉树的数组)的长度 ②递归中:上一次遍历到的位置下标。0~nLength-1也就是上一次确认为根的左子树下标 nInde原创 2017-10-28 17:39:01 · 1122 阅读 · 0 评论 -
【C++语法】C++自带的sort(), qsort()函数
C++sort()函数的用法 近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧!(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为nlog2(n),执行效率较高! (二转载 2017-10-04 16:25:01 · 587 阅读 · 0 评论 -
【LeetCode】 Find Minimum In Rotated Sorted Array(BinarySearch) - Medium
寻找旋转排序数组中的最小值 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。 你可以假设数组中不存在重复的元素。样例 给出[4,5,6,7,0,1,2] 返回 0(1)Javapackage FindMinimumInRotatedSortedArrayV1;public class FindMini原创 2017-10-04 02:11:40 · 255 阅读 · 0 评论 -
【LeetCode】Binary Tree Preorder Traversal 二叉树的前序遍历(3种方法)- Easy+
二叉树的前序遍历 给出一棵二叉树,返回其节点值的前序遍历。样例 给出一棵二叉树 {1,#,2,3},1 \ 2 / 3 返回 [1,2,3].挑战 你能使用非递归实现么?3种方法:非递归、递归、分治(1)Java/** * Definition of TreeNode: * public class TreeNode { * pub原创 2017-10-16 07:56:15 · 308 阅读 · 0 评论 -
【LeetCode】Binary Tree Inorder Traversal二叉树的中序遍历 - Easy
二叉树的中序遍历 给出一棵二叉树,返回其中序遍历样例 给出二叉树 {1,#,2,3},1 \ 2 / 3 返回 [1,3,2].挑战 你能使用非递归算法来实现么?(1)Javapackage BinaryTreeTraversal;import java.util.ArrayList;import java.util.List;import j原创 2017-10-16 09:18:32 · 341 阅读 · 0 评论 -
【数据结构】面试搞定二叉树大总结-15道二叉树题
感谢以下文章的作者:BIN大神的大总结:http://blog.youkuaiyun.com/fightforyourdream/article/details/16843303 面试大总结之二:Java搞定面试中的二叉树题目以及:http://blog.youkuaiyun.com/luckyxiaoqiang/article/details/7518888转载 2017-10-16 09:22:39 · 387 阅读 · 0 评论 -
【LeetCode】Jump Game II 跳跃游戏II - 贪心 Medium
跳跃游戏 II 给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 样例 给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次) 标签 贪心 数组(1)Jav...原创 2018-03-26 13:59:52 · 1807 阅读 · 0 评论 -
【LeetCode】Jump Game 跳跃游戏 - 贪心 - Medium
给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。 注意事项 这个问题有两个方法,一个是贪心和 动态规划。 贪心方法时间复杂度为O(N)。 动态规划方法的时间复杂度为为O(n^2)。 我们手动设置小型数据集,使大家可以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划...原创 2018-03-26 09:20:48 · 265 阅读 · 0 评论 -
【LeetCode】Generate Parenthesis - Medium
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。样例 给定 n = 3, 可生成的组合如下: “((()))”, “(()())”, “(())()”, “()(())”, “()()()”标签 递归 回溯法 字符串处理 谷歌 Zenefits相关题目 容易有效的括号序列27 %中等 不同的二叉查找树 II33 %中等(1)Javap...原创 2018-03-06 17:24:49 · 219 阅读 · 0 评论 -
【LeetCode】Combination Sum - Medium
数字组合给出一个候选数字的set(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为:[7],[2,2,3]注意事项 所有的数字(包括目标数字)均为正整数。 元素组合(a1, a2, … , ak)必须是非降序(ie, a1 ≤ a2 ≤ … ≤ ak)。 解集不能包含...原创 2018-03-05 17:16:31 · 147 阅读 · 0 评论 -
【LeetCode】Subsets_II 带重复元素的子集 - Medium
给定一个可能具有重复数字的列表,返回其所有可能的子集 注意事项 子集中的每个元素都是非降序的;两个子集间的顺序是无关紧要的;解集中不能包含重复子集 样例如果 S = [1,2,2],一个可能的答案为:[ [2], [1], [1,2,2], [2,2], [1,2], []]挑战 你可以同时用递归与非递归的方式解决么?(1)Javap...原创 2018-03-05 00:16:18 · 263 阅读 · 0 评论 -
【LeetCode】Subsets - Medium
给定一个含不同整数的集合,返回其所有的子集、给定一个含不同整数的集合,返回其所有的子集 注意事项 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 挑战 你可以同时用...原创 2018-03-04 16:51:23 · 186 阅读 · 0 评论 -
【C】指针数组与数组指针详解
指针数组与数组指针详解1.什么是指针数组和数组指针?指针数组:指针数组可以说成是”指针的数组”(存放指针的数组),首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。数组指针:数组指针可以说成是”数组的指针”(指向数组的指针),首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这...原创 2018-03-15 08:29:59 · 289 阅读 · 0 评论 -
【LeetCode】搜索二维矩阵2 Search a 2D Matrix II - Medium
写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。 这个矩阵具有以下特性: ” 每行中的整数从左到右是排序的。 ” 每一列的整数从上到下是排序的。 ” 在每一行或每一列中没有重复的整数。 样例 考虑下列矩阵: [ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10] ] 给出target = 3...原创 2018-02-28 22:34:21 · 221 阅读 · 0 评论 -
【LeetCode】搜索二维矩阵 Search a 2D Matrix - Easy
写出一个高效的算法来搜索 m × n矩阵中的值。 这个矩阵具有以下特性: - 每行中的整数从左到右是排序的。 - 每行的第一个数大于上一行的最后一个整数。 样例 考虑下列矩阵: [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] 给出 target = 3,返回 true 挑战 O(log(n) ...原创 2018-02-28 22:28:54 · 259 阅读 · 0 评论 -
【LeetCode】 Find Minimum In Rotated Sorted Array_II(BinarySearch) - Medium
寻找旋转排序数组中的最小值 II 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 数组中可能存在重复的元素。样例 给出[4,4,5,6,7,0,1,2] 返回 0 标签 二分法 分治法 相关题目 中等寻找旋转排序数组中的最小值 39 % 中等搜索旋转排序数组 II 40...原创 2018-02-28 20:23:08 · 210 阅读 · 0 评论 -
【LeetCode】N-Queens N皇后 - Medium
n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。 给定一个整数n,返回所有不同的n皇后问题的解决方案。 每个解决方案包含一个明确的n皇后放置布局,其中”Q”和”.”分别表示一个女王和一个空位置。样例 对于4皇后问题存在两种解决的方案: [ [“.Q..”, // Solution 1 “…Q”, “Q…”, “..Q....原创 2018-03-07 15:40:43 · 214 阅读 · 0 评论 -
C++ string的用法和例子
使用场合:string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。同时C++的算法库对string也有着很好的支持,而且string还和c语言的字符串之间有着良好的接口。虽然也有一些弊端,但是瑕不掩瑜。 其中使用的代码多数都是来自cpp官网,因为例子非常全。声明和初始化方法:想使用string首先转载 2018-01-13 08:41:43 · 224 阅读 · 0 评论 -
【LeetCode】图的连通分量(并查集)
求连通分量/城市个数:(如下图 找根结点,画正字) C++ : #include <iostream>#include <cstdio>#include <cstdlib>#include <memory.h>using namespace std;//查找图的联通分量class UnionFindSet {private: int m_nN; int* m_pParen原创 2017-12-20 00:55:46 · 1756 阅读 · 0 评论 -
【C++】关于typedef的用法总结
转自: http://blog.youkuaiyun.com/wangqiulin123456/article/details/8284939 在C还是C++代码中,typedef都使用的很多,在C代码中尤其是多。typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好转载 2017-10-25 13:14:39 · 241 阅读 · 0 评论 -
【LeetCode】162.Find Peak Element 寻找峰值(二分法) - Medium
寻找峰值 你给出一个整数数组(size为n),其具有以下特点: 1. 相邻位置的数字是不同的 2. A[0] < A[1] 并且 A[n - 2] > A[n - 1] 3. 假定P是峰值的位置则满足A[P] > A[P-1]且A[P] > A[P+1],返回数组中任意一个峰值的位置。注意事项 It’s guaranteed the array has at least one peak.原创 2017-10-03 17:45:21 · 1238 阅读 · 0 评论 -
【LeetCode】Missing Integer第一个丢失的整数 - Medium
在数组 A 中,包含 0 到 n 的整数,其中缺失了一个数。在这一问题中,我们难以仅用一个操作审查数组 A 中的所有整数。 如: 3,5,1,2,-3,7,14,8 输出4.【析】 例如: A[8]=3 < 8 且3>1,则A[8]=3在A[1,2,…,7]中已经出现过 -> 丢弃 A[3] = 8 > 3 且8 将A[ A[3] ] = A[8]与A[3]交换。 若A[3]=8>N原创 2017-10-03 20:10:07 · 484 阅读 · 0 评论 -
【LeetCode】寻找众数(绝对众数、1/k众数) - Medium
1.已知给定的N个整数A[1…N]存在绝对众数,以最低的时空复杂度计算该绝对众数。 (若某众数出现次数多于n/2,则称作绝对众数), 【分析】 删除数组A中两个不同的数,绝对众数不变。 若两个数中有1个是绝对众数,则剩余的N-2个数中,绝 对众数仍然大于(N-2)/2; 若两个数中没有绝对众数,显然不影响绝对众数。算法描述:记m为候选绝对众数,出现次数为c,初始化为0。 遍历数组A:若c原创 2017-10-03 16:56:07 · 6833 阅读 · 1 评论 -
【数据结构】顺序表、单链表的 比较+总结
(优缺点文字部分转自: http://blog.youkuaiyun.com/zhang_minli/article/details/50489996)顺序表和链表de优缺点顺序表的优点方法简单,各种高级语言中都有数组,容易实现。 不用为表示结点间的逻辑关系而增加额外的存储开销(链表要增加额外的指针域)。 顺序表具有按元素序号随机访问的特点。缺点 在顺序表中做插入删除操作时,平均移动大约表中一般的元素,因原创 2017-09-17 08:04:34 · 1728 阅读 · 0 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。 指针转载 2017-09-08 14:09:25 · 405 阅读 · 0 评论 -
【LeetCode】Evaluate Reverse Polish Notation(逆波兰表达式求值) -(Linkedin) Medium ++
Evaluate Reverse Polish NotationEvaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, *, /. Each operand may be an integer or another expression.Example [原创 2017-09-08 00:03:30 · 467 阅读 · 0 评论