02 2020 档案

摘要:题目: 请你设计一个 贪吃蛇游戏,该游戏将会在一个 屏幕尺寸 = 宽度 x 高度 的屏幕上运行。如果你不熟悉这个游戏,可以 点击这里 在线试玩。 起初时,蛇在左上角的 (0, 0) 位置,身体长度为 1 个单位。 你将会被给出一个 (行, 列) 形式的食物位置序列。当蛇吃到食物时,身子的长度会增加 阅读全文
posted @ 2020-02-29 22:47 NeoZy 阅读(292) 评论(0) 推荐(0)
摘要:题目: 你是个房地产开发商,想要选择一片空地 建一栋大楼。你想把这栋大楼够造在一个距离周边设施都比较方便的地方,通过调研,你希望从它出发能在 最短的距离和 内抵达周边全部的建筑物。请你计算出这个最佳的选址到周边全部建筑物的 最短距离和。 注意: 你只能通过向上、下、左、右四个方向上移动。 给你一个由 阅读全文
posted @ 2020-02-29 13:49 NeoZy 阅读(1427) 评论(0) 推荐(0)
摘要:派生类希望基类重载函数可见,情况有三种: a)派生类中覆盖某个版本,则某个版本可见,全部都覆盖重写,则全部版本可见。 b)派生类中一个也不覆盖,则全部基类版本可见。 c)派生类需要添加新的重载版本,同时又需要可见基类的重载版本,此时并不是必须全部覆盖重写全部版本。可在派生类中用using声明基类重载 阅读全文
posted @ 2020-02-29 01:45 NeoZy 阅读(663) 评论(0) 推荐(0)
摘要:转载于:https://www.runoob.com/w3cnote/cpp-virtual-functions.html 一、定义 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加 =0: virtual voi 阅读全文
posted @ 2020-02-29 00:39 NeoZy 阅读(567) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/friend-circles/ 班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋 阅读全文
posted @ 2020-02-28 22:28 NeoZy 阅读(200) 评论(0) 推荐(0)
摘要:39题目: 链接:https://leetcode-cn.com/problems/combination-sum/ 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字 阅读全文
posted @ 2020-02-28 16:25 NeoZy 阅读(665) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/ 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小 阅读全文
posted @ 2020-02-28 02:34 NeoZy 阅读(327) 评论(0) 推荐(0)
摘要:1.尽管派生类中含有基类继承来的成员,但派生类初始化这部分变量需要调用基类的构造函数。 1 class A 2 { 3 private: 4 int x; 5 virtual void f(){cout<<"A f"<<endl;} 6 public: 7 A(/* args */){x=1;cou 阅读全文
posted @ 2020-02-27 22:45 NeoZy 阅读(1897) 评论(0) 推荐(0)
摘要:转载:https://blog.csdn.net/vanturman/article/details/79393317 首先记住一点:派生类能且只能访问基类的public和protected成员!默认继承方式是private! 第一: private,public,protected的访问范围: p 阅读全文
posted @ 2020-02-27 19:45 NeoZy 阅读(567) 评论(0) 推荐(0)
摘要:转载于:https://blog.csdn.net/lmb1612977696/article/details/81543802 std::ref和std::cref 解释: std::ref 用于包装按引用传递的值。 std::cref 用于包装按const引用传递的值。 为什么需要std::re 阅读全文
posted @ 2020-02-27 15:51 NeoZy 阅读(339) 评论(0) 推荐(0)
摘要:304题目: 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。 上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。 示例: 阅读全文
posted @ 2020-02-27 00:56 NeoZy 阅读(230) 评论(0) 推荐(0)
摘要:题目: 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图。 起始的时候,每个格子的地形都被默认标记为「水」。我们可以通过使用 addLand 进行操作,将位置 (row, col) 的「水」变成「陆地」。 你将会被给定一个列表,来记录所有需要被操作的位置,然后你需要返回计算 阅读全文
posted @ 2020-02-26 20:46 NeoZy 阅读(976) 评论(0) 推荐(0)
摘要:假设有一大堆人,这其中分了很多小群体。每个小群体都有自己的首领。比如a、b、c、d是一个小群体。其中a是头儿,b是a的下属,c和d都是b的下属。 那么我们可以这样写:b->a,表示b的上级是a。 c->b,d->b,表示c和d的上级都是b。 这其实就已经是并差集了。稍微抽象一下,字母替换为数字,用一 阅读全文
posted @ 2020-02-26 19:56 NeoZy 阅读(421) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/russian-doll-envelopes/ 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样 阅读全文
posted @ 2020-02-26 12:57 NeoZy 阅读(273) 评论(0) 推荐(0)
摘要:1. char* x;这样的一定是野指针,指针声明时要直接初始化!或者置null也行! 2. 1 int main() 2 { 3 char *x=new char; 4 delete x; 5 cout<<*x; 6 getchar(); 7 return 0; 8 } delete x;之后,x 阅读全文
posted @ 2020-02-26 01:55 NeoZy 阅读(377) 评论(0) 推荐(0)
摘要:代码: 1 class test{ 2 public: 3 static void f1(){cout<<y<<endl;} 4 void f2(){cout<<y<<endl;} 5 void f3(){cout<<x<<endl;} 6 void f4(int p){cout<<p<<endl; 阅读全文
posted @ 2020-02-26 01:31 NeoZy 阅读(1934) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/largest-divisible-subset/ 给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。 如果有多个目 阅读全文
posted @ 2020-02-26 00:07 NeoZy 阅读(278) 评论(0) 推荐(0)
摘要:1.算术移位和逻辑移位。 逻辑移位是只补0,算术移位是看符号,负数补1,正数补0(讨论的是右移的情况下)。 负数左移右边一样补0。如果遇到位运算的相关题目需要对int变量进行左移而且不知道正负,那么先强制类型准换为unsigned再进行移位操作。 2.constexpr意义是字面值常量,即在编译期就 阅读全文
posted @ 2020-02-25 17:40 NeoZy 阅读(163) 评论(0) 推荐(0)
摘要:构造函数和重载函数运算符如何区分: 1 class Distance 2 { 3 private: 4 int feet; 5 int inches; 6 public: 7 Distance(){ 8 feet = 0; 9 inches = 0; 10 } 11 Distance(int f, 阅读全文
posted @ 2020-02-25 16:35 NeoZy 阅读(474) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/max-sum-of-rectangle-no-larger-than-k/ 给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和。 示例: 输入: matrix = [[1,0, 阅读全文
posted @ 2020-02-25 15:05 NeoZy 阅读(436) 评论(0) 推荐(0)
摘要:题目: 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 示例 1: 输入: nums = [1, 5, 1, 1, 6, 4]输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]示例 2: 输入: n 阅读全文
posted @ 2020-02-25 12:04 NeoZy 阅读(375) 评论(0) 推荐(0)
摘要:怕忘了,写这:析构函数不会释放指针成员指向的对象(但智能指针类时有自己的析构函数的)。 析构函数中成员按初始化顺序的逆序销毁。内置类型没有析构函数。 继承体系中,派生类析构函数最先执行,然后是其基类的析构函数,以此类推,沿着继承体系的反方向往上。 众所周知,C++的类如果没有默认构造函数,会自动生成 阅读全文
posted @ 2020-02-23 23:40 NeoZy 阅读(466) 评论(0) 推荐(0)
摘要:题目: 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例: 输入: 13输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。 解答: 递归解决。分为首位为1和首位不为1两种情况: 1.首位为1,如12345。 先考虑大于等于1000 阅读全文
posted @ 2020-02-23 20:13 NeoZy 阅读(225) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/word-ladder-ii/ 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: 每次转换只能改 阅读全文
posted @ 2020-02-23 18:10 NeoZy 阅读(244) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/flip-game-ii/ 你和朋友玩一个叫做「翻转游戏」的游戏,游戏规则:给定一个只有 + 和 - 的字符串。你和朋友轮流将 连续 的两个 "++" 反转成 "--"。 当一方无法进行有效的翻转时便意味着游戏结束,则另 阅读全文
posted @ 2020-02-22 23:33 NeoZy 阅读(424) 评论(0) 推荐(0)
摘要:题目: 链接:https://leetcode-cn.com/problems/ipo/submissions/ 假设 力扣(LeetCode)即将开始其 IPO。为了以更高的价格将股票卖给风险投资公司,力扣 希望在 IPO 之前开展一些项目以增加其资本。 由于资源有限,它只能在 IPO 之前完成最 阅读全文
posted @ 2020-02-21 23:47 NeoZy 阅读(346) 评论(0) 推荐(0)
摘要:题目1 121. 买卖股票的最佳时机I: 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票), 阅读全文
posted @ 2020-02-21 17:24 NeoZy 阅读(358) 评论(0) 推荐(0)
摘要:先左右对称反转,再沿右对角线对折,面试记住就行了 代码: class Solution { public: void rotate(vector<vector<int>>& matrix) { int n=matrix.size(); for(int i=0;i<n;++i){ //倒转每行 rev 阅读全文
posted @ 2020-02-20 01:24 NeoZy 阅读(612) 评论(0) 推荐(0)
摘要:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。 示例 1: 输入: s = "leetcode"输出: false 示例 2: 输入: s = "abc"输出: true限制: 0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。 最开始想的是字符可能范围是0~25 阅读全文
posted @ 2020-02-20 00:28 NeoZy 阅读(326) 评论(0) 推荐(0)
摘要:Q: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的最少分割次数。 示例: 输入: “aab” 输出: 1 解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。 A: 1.我最开始想到了要两次DP,先算一个是否是回文数的dp数组,再算所 阅读全文
posted @ 2020-02-18 22:11 NeoZy 阅读(285) 评论(0) 推荐(0)
摘要:Q: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明: 分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = “catsanddog” 阅读全文
posted @ 2020-02-18 20:55 NeoZy 阅读(224) 评论(0) 推荐(0)
摘要:Q: 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶 阅读全文
posted @ 2020-02-18 14:29 NeoZy 阅读(190) 评论(0) 推荐(0)
摘要:题目: 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15 阅读全文
posted @ 2020-02-18 13:20 NeoZy 阅读(185) 评论(0) 推荐(0)
摘要:Q: 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 A: 注意一点,题目说的序列长度是有几个连续+1的数。 然后题目 阅读全文
posted @ 2020-02-18 13:09 NeoZy 阅读(181) 评论(0) 推荐(0)
摘要:主要是记录一下这个数据结构。 比如这个trie树,包含三个单词:sea,sells,she。 代码: 1 class Trie { 2 bool isWord; 3 vector<Trie*> children; 4 public: 5 /** Initialize your data struct 阅读全文
posted @ 2020-02-17 22:50 NeoZy 阅读(181) 评论(0) 推荐(0)
摘要:C++11之后允许对非静态成员变量进行初始化(in-class initialization),不过对于非fundamental(非基本数据)类型需要采用的是initializer_list来实现的 所以如下代码是错误的: class A{ public: int x=1; string s="qw 阅读全文
posted @ 2020-02-17 15:58 NeoZy 阅读(2607) 评论(0) 推荐(1)
摘要:题目: 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例 1: 输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2: 输入 阅读全文
posted @ 2020-02-17 15:45 NeoZy 阅读(268) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/generate-parentheses/ 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()" 阅读全文
posted @ 2020-02-17 15:43 NeoZy 阅读(152) 评论(0) 推荐(0)
摘要:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O 阅读全文
posted @ 2020-02-17 15:42 NeoZy 阅读(125) 评论(0) 推荐(0)
摘要:双指针最基础的题目是一个区间里找两个数字的和等于Target。首先将区间从小到大排序。接下来只要一个le指针,一个ri指针,分别从区间左右边界往中间推进即可。复杂度是排序的nlogn。 下面几道题都是一个区间里找三个数字的和满足xx条件的。这个题目的做法首先还是先排序。之后先固定一个数字,然后在该数 阅读全文
posted @ 2020-02-17 15:40 NeoZy 阅读(159) 评论(0) 推荐(0)
摘要:3. 无重复字符的最长子串 A: 要找最长的无重复子串,所以用一个map保存出现过的字符,并且维持一个窗口,用le和ri指针标识。ri为当前要遍历的字符,如果ri字符在map中出现过,那么将le字符从map移除,le++。如果ri字符没出现过,那ri++,并更新最大无重复子串长度。全程利用map保持 阅读全文
posted @ 2020-02-17 15:38 NeoZy 阅读(728) 评论(0) 推荐(0)
摘要:问题: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明: 你 阅读全文
posted @ 2020-02-17 13:09 NeoZy 阅读(387) 评论(0) 推荐(0)
摘要:题目描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。 正常人解法: 1 #include<iostream> 2 using namespace std; 3 int main(){ 4 float num; 5 cin>>n 阅读全文
posted @ 2020-02-16 03:16 NeoZy 阅读(234) 评论(0) 推荐(0)
摘要:题目描述: 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 最后一个数后面也要有空格 解答: 傻了这题,根本不用考虑是否是质数的问题。 我考虑到如果除4除6这种非质数怎么处理。但实际上被除数从2开始往上递增,如果能整除就不增加,看除法的结果 阅读全文
posted @ 2020-02-16 02:42 NeoZy 阅读(311) 评论(0) 推荐(0)
摘要:题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是 阅读全文
posted @ 2020-02-14 22:55 NeoZy 阅读(547) 评论(0) 推荐(0)
摘要:题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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] 阅读全文
posted @ 2020-02-14 20:01 NeoZy 阅读(241) 评论(0) 推荐(0)
摘要:题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 解答: 阅读全文
posted @ 2020-02-14 15:15 NeoZy 阅读(135) 评论(0) 推荐(0)
摘要:题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 解: 由于二叉搜索树的中序遍历是升序,所以在中序基础上添加计数器即可。 1 class Solution { 2 public: 3 TreeNode* Kth 阅读全文
posted @ 2020-02-14 03:02 NeoZy 阅读(125) 评论(0) 推荐(0)
摘要:题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 方法1: 正常层次遍历,利用普通队列。逢奇数行(从0算起)就把该层结果逆序。 1 class Solution { 2 public: 3 ve 阅读全文
posted @ 2020-02-14 02:20 NeoZy 阅读(129) 评论(0) 推荐(0)
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 写法1: 当前遍历到cur节点,如果cur->next和cur->next->next的值相同,说明找到了重复节点, 阅读全文
posted @ 2020-02-13 20:43 NeoZy 阅读(200) 评论(0) 推荐(0)
摘要:首先给段代码: 1 class A{ 2 public: 3 int x=0; 4 A():x(1){cout<<"A(): x="<<x<<endl;} 5 A(int a):x(a){cout<<"A(int a): x="<<x<<endl;} 6 A(int a,int b):x(a){ 7 阅读全文
posted @ 2020-02-13 02:18 NeoZy 阅读(744) 评论(0) 推荐(0)
摘要:1 class Solution { 2 public: 4 bool isNumeric(char* string) 5 { 6 std::string str=string; 7 if(str.empty()){return true;} 8 bool if_e=false,if_dian=fa 阅读全文
posted @ 2020-02-13 01:27 NeoZy 阅读(102) 评论(0) 推荐(0)
摘要:这题一年前就做过,当时刚开始刷leetcode,提交了几十次过不去,就放那没管了。今天剑指offer又遇到这题,终于做出来了,用的dp。 1 class Solution { 2 public: 3 bool isMatch(string s, string p) { 4 int s_len=s.s 阅读全文
posted @ 2020-02-11 02:02 NeoZy 阅读(169) 评论(0) 推荐(0)
摘要:我的常规方法: 由于数组长度n,所有数据的大小都在0到n-1之间,所以考虑把每一位上的数字都放到应该呆的位置。如果nums[i]!=i并且nums[i]该呆的位置(nums[nums[i]])已经等于nums[i]了,说明出现了重复数字。 1 class Solution { 2 public: 3 阅读全文
posted @ 2020-02-11 01:02 NeoZy 阅读(149) 评论(0) 推荐(0)
摘要:用位运算模拟加法,num1+num2的加法结果可以分为两个部分,一部分为二进制位加法产生了进位的结果,另一部分是二进制位加法没产生进位的结果。 比如3+5,二进制011+101,产生进位的结果为最后一位1+1,进到倒数第二位,结果为010。没产生进位的是第1位0+1和第二位1+0,结果110。 1 阅读全文
posted @ 2020-02-11 00:05 NeoZy 阅读(100) 评论(0) 推荐(0)
摘要:这种题目给一个数组,里面有一个数字只出现过一次,其他数字都出现过k次,求这个只出现过一次的数字。 参考leetcode评论区的思路,这种题目对于任意k都有一个通用解法,这个解法分别考察二进制位的每一位,求出每一位是1还是0,最终得到答案。 比如求答案的最后一位,那么统计数组所有数字的最后一位是等于1 阅读全文
posted @ 2020-02-10 02:44 NeoZy 阅读(142) 评论(0) 推荐(0)
摘要:贪心算法(应该算吧),每次至少复合一对情侣 1 class Solution { 2 public: 3 int minSwapsCouples(vector<int>& row) { 4 if(row.empty()){return 0;} 5 int n=row.size(); 6 vector 阅读全文
posted @ 2020-02-10 00:58 NeoZy 阅读(223) 评论(0) 推荐(0)
摘要:官方题解给了个双指针的方法,估计面试也不会,先不看了。 正常方法: 1.排序 2.用set或者直接在原vector上记录出现的值 3.二分,这里是对数据范围2分。令n为vector长度,则所有数据都在1到n-1的范围内。取le=1,ri=n-1,mi=n/2。然后遍历整个vector,计算在[le, 阅读全文
posted @ 2020-02-09 23:59 NeoZy 阅读(167) 评论(0) 推荐(0)
摘要:1 class Solution { 2 public: 3 int firstMissingPositive(vector<int>& nums) { 4 if(nums.empty()){return 1;} 5 int n=nums.size(); 6 for(int i=0;i<n;++i) 阅读全文
posted @ 2020-02-09 23:22 NeoZy 阅读(114) 评论(0) 推荐(0)
摘要:题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法1:用set记录出现过的数字 class Solution { public: void FindNumsAppearOnce(vector<int> data,int* num1,int * 阅读全文
posted @ 2020-02-09 21:08 NeoZy 阅读(169) 评论(0) 推荐(0)
摘要:这题之前leetcode做过,权当复习 首先这题没说是否一定有公共节点,如果代码可能因为这一点造成死循环的,需要提前验证所给两个链表是否有公共节点。 方法1:对于每一个list1的节点,遍历list2查找有无相同节点,O(MN) 方法2:用两个栈分别存储两个链表的所有节点,然后比较二者栈顶(如果有公 阅读全文
posted @ 2020-02-09 03:55 NeoZy 阅读(148) 评论(0) 推荐(0)
摘要:leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧 对于数字abcde,如果第一位是1,比如12345,即计算f(12345)。 那么首位为1对结果的增益一共是10000到12345一共2346个。 另外首位为1的数字, 阅读全文
posted @ 2020-02-08 17:14 NeoZy 阅读(212) 评论(0) 推荐(0)
摘要:O(N)划分法,注意这个方法会改变原数据(函数参数是引用的情况下)!当然也可以再定义一个新容器对其划分 要求前k小的数,只要执行快排划分,每次划分都会把数据分成大小两拨。直到某一次划分的中心点正好在k处,则左侧0~k-1的数字正好就是所求。 class Solution { public: vect 阅读全文
posted @ 2020-02-08 14:51 NeoZy 阅读(129) 评论(0) 推荐(0)
摘要:#include<vector> #include<iostream> #include<time.h> using namespace std; int partition_1(vector<int> &nums,int le,int ri){ //来回填坑法 if(le>=ri){ return 阅读全文
posted @ 2020-02-08 02:51 NeoZy 阅读(504) 评论(0) 推荐(0)
摘要:我惯用的dfs模板直接拿来套 class Solution { public: vector<string> Permutation(string str) { if(str.empty()){return{};} int n=str.size(); vector<string> res; vect 阅读全文
posted @ 2020-02-07 22:50 NeoZy 阅读(233) 评论(0) 推荐(0)
摘要:中序递归,一个pre节点记录前一个节点 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } 阅读全文
posted @ 2020-02-07 15:36 NeoZy 阅读(168) 评论(0) 推荐(0)
摘要:时间O(N),空间O(N) /* struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), random(NULL) { 阅读全文
posted @ 2020-02-07 01:42 NeoZy 阅读(164) 评论(0) 推荐(0)
摘要:一开始写的垃圾代码,push和pop都是O(N) class Solution { public: vector<int> vec; int min_val=INT_MAX,min_cnt=0; void push(int value) { vec.push_back(value); if(min_ 阅读全文
posted @ 2020-02-06 16:32 NeoZy 阅读(196) 评论(0) 推荐(0)
摘要:dfs: class Solution { public: string decodeString(string s) { int i=0; return dfs(s,i); } string dfs(string& s,int& i){//计算一对括号内的解码后字符串 string tmp=""; 阅读全文
posted @ 2020-02-02 22:28 NeoZy 阅读(190) 评论(0) 推荐(0)
摘要:78子集 dfs dfs1: 和全排列的区别就是对于当前考察的索引i,全排列如果不取i,之后还要取i,所以需要一个visited数组用来记录。对于子集问题如果不取i,之后也不必再取i。 单纯递归回溯 class Solution { public: vector<vector<int>> subse 阅读全文
posted @ 2020-02-02 16:13 NeoZy 阅读(191) 评论(0) 推荐(0)
摘要:Solution1 动态规划 方法1:dp[i][j]表示i到j是否是回文 class Solution { public: string longestPalindrome(string s) { int n=s.size(); int max_len=1,le=0,ri=0; if(n==0){ 阅读全文
posted @ 2020-02-02 14:17 NeoZy 阅读(91) 评论(0) 推荐(0)