![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
QMay
这个作者很懒,什么都没留下…
展开
-
位运算系列(&, |, ^)
1、136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1思路: 异或操作^的性质: a^a = 0, 0^a = a, 对所有元素进行异或的结果就是只出现一次的元素,其它元素两两抵消。class Solution {public: int singleNumber(vector&原创 2020-10-15 20:54:19 · 316 阅读 · 0 评论 -
摩尔投票算法-leetcode数组出现次数超过一半和1/3的元素。
1、剑指 Offer 39. 数组中出现次数超过一半的数字[1]数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。摩尔投票算法是基于这个事实:每次从序列里选择两个不相同的数字删除掉(抵消),最后剩下一个数字或几个相同的数字,就是出现次数大于总数一半的那个。目标:不断删除2个不同数字,直到无法删除。对实现过程的理解:假设我们有2个隐形数组, array, result分别表示当前无法删除的元素和删除之后剩下的元素。例:原创 2020-07-05 16:16:31 · 589 阅读 · 0 评论 -
二叉树bfs/dfs-199二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。在二叉树问题中,递归dfs是很常用的方法,本题同样适用。dfs:分别考虑左右子树的右视图,若左子树的右视图的高度>右子树的右视图高度,则右视图为右子树的右视图+左子树剩余的右视图若左子树的右视图的高度>右子树的右视图高度,则右视图为右子树的右视图代码(c++)vector <int> res; if (root...原创 2020-07-02 07:54:02 · 157 阅读 · 0 评论 -
树形DP系列-leetcode124. 二叉树中的最大路径和,leetcode543.二叉树的直径
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。看到这题一开始整体的思路还是递归,对左右子树分别递归处理。如果dfs(root)表示...原创 2020-06-30 11:41:33 · 260 阅读 · 0 评论 -
逻辑短路和快速乘-剑指 Offer 64. 求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。注:1 <= n<= 10000思路:如果不考虑条件限制,这道题很简单。可以用递归或者直接公式计算sum=n*(n+1)/2。1、递归: int sumNums(int n) { int sum = 0; if (n>0) sum = n + sumNums(n-1); .原创 2020-06-21 17:27:04 · 128 阅读 · 0 评论 -
二分法搜索行列有序矩阵系列
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素.示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。提示:你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2 。因为是有序数组查找,首先想到的就是二分法。首先确定查找范围,low=matrix[0][0],high...原创 2020-06-20 11:59:13 · 483 阅读 · 0 评论 -
leetcode刷题-相交链表
编写一个程序,找到两个单链表相交的起始节点。思路:考虑两个简单无环的单向链表,若相交,从某个节点之后节点相同,一定呈Y字形相交。方法一、借用栈结构,使用两个栈,分别加入A, B链表的节点;然后对栈遍历,若栈顶元素相等,则一定相交,记录此时的节点,元素出栈,一直到栈顶元素不相等,此时之前记录的节点就是相交节点。代码:/** * Definition for singly-l...原创 2020-04-23 11:51:15 · 175 阅读 · 0 评论 -
乘法表中第k小的数-二分法
几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第k小的数字吗?给定高度m 、宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字。例 1:输入: m = 3, n = 3, k = 5输出: 3解释:乘法表:1 2 32 4 63 6 9第5小的数字是 3 (1, 2, 2...原创 2020-04-23 10:55:49 · 576 阅读 · 0 评论 -
c++知识理解(#define, 堆/栈内存,static, const关键字,引用与指针,多态)
1、宏定义宏定义命令 #define ,1)不带参数的宏定义格式:#define 标识符 字符串,其中标识符即为宏名。作用:在预编译阶段进行宏展开,将宏名替换为定义的字符串。不做语法检查。说明:a.宏名一般大写,末尾无分号 b.宏定义不分配内存,变量定义分配内存 c. 宏定义只对标识符进行替换,不会将包含标识符的字符串进行替换...原创 2020-04-21 17:21:21 · 440 阅读 · 0 评论