
刷题总结
MagnumLu
一只喜欢安安静静写代码的程序猿~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉排序树转换成有序的双向链表C++实现
题目描述:将二叉排序树转换成一个有序的双向链表,要求:不能创建任何新的节点,只能通过调整指针的指向来实现; 解题思路:二叉排序树的中序遍历是一个递增的序列,根据这个特性,在二叉排序树的中序遍历过程中构造出一条双向链表不就行了嘛。关键是如何实现呢?(1)在中序遍历过程中用一个引用变量last记录遍历的上一个节点(初始为NU...原创 2019-10-14 22:30:36 · 978 阅读 · 1 评论 -
【牛客网刷题】剑指Offer第二题——替换空格
题目描述这个题目也没有测试用例,而且给出的C++定义的函数实现结构是这样的:原来一直以为这个length参数是字符串的长度;后来一直通不过测试用例,看了原书才知道这个length是字符串指针str指定的最长数组长度!! 而且这个题目也没说让原地置换,因为这个length就是为原地置换而给出的! 所以感觉题目说的不清楚搞得很伤。所以明白了这道题的真实用意之后:要求原地替换(就是不...原创 2019-03-10 13:19:26 · 400 阅读 · 0 评论 -
多个整数拼接成最大整数
题目说明输入n个正整数,要求把他们拼接成最大的整数输出。举例:输入3, 30 拼接成的最大整数是:330输入1, 3, 30, 305, 346, 5, 58, 8 拼接成最大整数是: 85853463305301思路解析:这道题一旦陷入常规思路会发现越想越复杂。关键是要把其转换为数组排序的问题,而这个排序的规则怎么定义呢?给你任意两个整数,设计一个比较规则,...原创 2019-03-10 19:11:59 · 7072 阅读 · 2 评论 -
【牛客网】2018字节跳动编程1——三只球队(自己起的名字)
题目描述有三只球队,每只球队编号分别为球队1,球队2,球队3,这三只球队一共需要进行 n 场比赛。现在已经踢完了k场比赛,每场比赛不能打平,踢赢一场比赛得一分,输了不得分不减分。已知球队1和球队2的比分相差d1分,球队2和球队3的比分相差d2分,每场比赛可以任意选择两只队伍进行。求如果打完最后的 (n-k) 场比赛,有没有可能三只球队的分数打平。 输入描述:第一行包含一个数字 t ...原创 2019-03-15 10:02:23 · 1274 阅读 · 1 评论 -
【牛客网】2018字节跳动编程2——最大连续相同字符子串(自己起的名字)
链接:https://www.nowcoder.com/questionTerminal/dcc301bc11a7420b88afdbd272299809来源:牛客网有一个仅包含’a’和’b’两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个’a’设置为’b’,或者把一个’b’置成’a’);但是操作的次数有上限m,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长...原创 2019-03-15 12:03:30 · 1593 阅读 · 0 评论 -
华为2019年3月20日笔试第二题——蛇形字符串
输入一个字符串(不包含空格),请寻找输入中包含的所有蛇形字符串。蛇形字符串定义:1、蛇形字符串由连续的字符对组成,其特点如下: 1.1 字符对定义:字符对由同一字母的大写和小写组成(前大后小),如Aa,Dd 1.2 蛇形字符串中包含的字符对,必须是连续字母,并按照字母顺序排序。如AaBbCc2、从输入中寻找字符组成蛇形字符串(字符顺序不限),符合规则:...原创 2019-03-21 09:33:59 · 2591 阅读 · 1 评论 -
判断2个字符串是否含有相同的字符
第一种:暴力法解决,时间复杂度太大,N*N。第二种:也可以选择使用C++的map,map的插入和查找效率是lgN,所以总的时间复杂度是NlgN。当然你还可以使用unordered_map(底层是哈希存储),效率更高一点。第三种:使用逻辑运算符&和 | 的性质。具体实现是:每个字符都有一个ASCII码值,遍历一个字符串,把每个字符(ASCII码值为C)都转化成1 <<...原创 2019-03-24 19:48:17 · 11814 阅读 · 1 评论 -
【牛客网】迷宫寻路
题目描述假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到钥匙才能打开门。请设计一个算法,帮助探险家找到脱困的最短路径。如前所述,迷宫是通过一个二维矩阵表示的,每个元素的值的含义如下 0-墙,1-路,2-探险家的起始位置,3-迷宫的...原创 2019-04-01 17:57:43 · 1798 阅读 · 0 评论 -
网易游戏笔试【2020暑期实习生】游戏研发工程师第二批在线笔试4月6日
1、顺子AC代码(C++)#include <iostream>#include <string>#include <vector>using namespace std;int main(){ int T, N; string c; cin >> T; while (T--) { vector&...原创 2019-04-06 21:32:08 · 2838 阅读 · 1 评论 -
基础链表练习
实现的基本功能:实现一个字符串链表,每插入一个字符串,链表会对其进行按字典进行排序。 重复插入的字符串自动忽略。 通过索引号可以获取到对应位置上的字符串。 移除一个特定的元素 返回链表中存储的字符串个数list.h文件/** * 基础链表练习 * 实现一个字符串链表,每插入一个字符串,链表会对其进行按字典进行排序(不区分大小写,如a在aa前,aa在b前等), *...原创 2019-04-08 12:59:43 · 316 阅读 · 0 评论 -
二进制数转整数、整数转二进制数、二进制数求模
1、整数转二进制数//将一个int型整数转换为二进制数string itob(int number){ string binNum; while (number) { binNum += '0' + number%2; number /= 2; } reverse(binNum.begin(), binNum.end()); return binNum;}如果需...原创 2019-04-08 17:24:16 · 7037 阅读 · 0 评论 -
LeetCode5017.从根到叶的二进制数之和
题目描述给出一棵二叉树,其上每个结点的值都是0或1。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数01101,也就是13。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。以10^9 + 7为模,返回这些数字之和。示例:输入...原创 2019-04-08 17:36:15 · 642 阅读 · 0 评论 -
LeetCode686.重复叠加字符串匹配
题目描述给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。举个例子,A = "abcd",B = "cdabcdab"。答案为 3,因为 A 重复叠加三遍后为“abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。注意:A与B字符串的长度...原创 2019-04-12 20:10:15 · 447 阅读 · 0 评论 -
LeetCode25.K个一组翻转链表
1、题目描述给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返...原创 2019-10-10 20:05:10 · 538 阅读 · 0 评论 -
异或性质运用
异或(^)的一个很重要的性质是: a ^ a = 0 a ^ 0 = a下面总结几道运用到其性质的题目。例1:有两个整型乱序数组,其中一个数组比另外一个多一个数字,其他数字都一样,让你求出这两个数组相差的那个数字。(要求时间复杂度为O(N))。思路:先分别求两个数组的异或,然后再将两个数组的异或结果再进行异或,最终结果就是答案。代码:int diffNumo...原创 2019-03-10 12:57:34 · 668 阅读 · 0 评论 -
LeetCode437.路径总和III(C++实现)
题目描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], su...原创 2018-12-12 10:49:52 · 813 阅读 · 0 评论 -
LeetCode最长前缀问题reference binding to null pointer of type 'struct value_type'
在刷LeedCode的求最长前缀问题时遇到如下问题:直觉上就是访问数组越界,但是一直找不出问题。出问题的代码如下:class Solution {public: string longestCommonPrefix(vector<string>& strs) { string ansStr; for (int i = 0; i...原创 2018-10-29 19:43:39 · 3450 阅读 · 2 评论 -
LeetCode21. 合并两个有序链表
题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4这道题目有两种解决方法,第一种是暴力解决,利用两个循环将其中一个链表中的节点一个一个地插入到另一个链表中,代码如下:/** * De...原创 2018-10-30 22:21:43 · 507 阅读 · 0 评论 -
LeetCode58.最后一个单词的长度(C++实现)
问题如下刚看这道题目以为很简单,直接调用C++的rfind()函数,以为几行代码就可以搞定,结果发现,测试用例太刁钻了,各种测试用例想不到的情况。比如以下这些测试用例:" ab ""a""a """" "" "没办法,只能采用最有效的方法——遍历字符串,将所有单词全部分离出来,代码如下://方法一:遍历字符串,分离出所有单词int lengthO原创 2018-11-06 15:11:38 · 571 阅读 · 0 评论 -
LeetCode第一题:两数之和C++实现
//方法一:暴力法//遍历每个元素 xx,并查找是否存在一个值与 target−x 相等的目标元素。vector<int> twoSum(vector<int>& nums, int target) { vector<int> ans; int length = nums.size(); for (int i = 0; i < len...原创 2018-11-02 14:01:33 · 620 阅读 · 1 评论 -
LeetCode189.旋转数组
前言:刷LeetCode时室友让我做道题目,就是这道旋转数组。我看这道题目的时候自己想的,做完跟室友一讨论发现是一个比较好的方法,比较快的方法一般也就是三次反转。我的方法比比三次反转还快一点。下面先看题目:1、我的方法题目中要求使用原地算法,并且如果时间复杂度是O(n^2)的话,会报“超出时间限制”。我的方法是从nums[0]开始,每次移动k的位置:即将nums[0]的值移动到...原创 2018-11-02 21:39:39 · 14661 阅读 · 15 评论 -
LeetCode70.爬楼梯(C++实现)
LeetCode70.爬楼梯的题目如下:方法一:直接递归实现(超时)刚开始直接用递归实现,思路也是比较直接的,如下图,当n = 5的时候,有8种方法。实现代码如下:void selectStair(int remainStep, int &count){ if(remainStep == 0) { //当剩余步数为0,说明找到一种方法,计数加一 coun...原创 2018-11-07 15:28:39 · 10481 阅读 · 3 评论 -
LeetCode53.最大子序和(C++实现)
先上题目:方法一:O(N^3)暴力解法(会报超时)//方法一:O(N^3)暴力解法(会报超时)/*O(N^3)的暴力解法比较容易想到,就是利用三层循环遍历计算每个可能的子序列,求其和并进行比较但是因为时间复杂度太大,在LeetCode会报超时。*/int maxSubArray(vector<int>& nums) { int maxSum = num...原创 2018-11-05 19:06:25 · 570 阅读 · 0 评论 -
LeetCode122.买卖股票的最佳时机II(C++实现)
题目描述:最开始用暴力法解决,后来终于体会到什么时间复杂度O(N^N)的……,自己测试数组中有30个以上的元素,就需要等半天了,更别说测试用例中一千多个元素了。参考官方题解中的java代码后,用C++实现,特总结如下:/*方法一:暴力法(时间超时)暴力法需要计算所有可能的交易组合相对应的利润,并找出其中最大的利润;在未处理的子序列中不断使用递归函数去寻找最大利润。这种方法:不仅...原创 2018-11-16 17:17:09 · 1850 阅读 · 3 评论 -
LeetCode371.两整数之和(C++实现)
题目描述解题思路这道题是需要用两数相与和异或来实现的,刚开始搞不清楚实现的过程,最后弄明白了,特总结说明如下:首先:a与b两个整数相异或(^)求得的是a与b无进位的相加,比如这里的无进位相加指的是每一个对应的二进制位相加的时候都没有进位! 那么我们就有了一个主意->如果我们将这个无进位相加的结果跟他们本来产生的进位再相加,那不就是a与b最终的和嘛!!!问题是:...原创 2018-12-08 11:53:29 · 788 阅读 · 0 评论 -
LeetCode206.反转链表(C++实现)
问题描述: 思路:遍历该链表,将每个节点按顺序头插法组成一条新链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */...原创 2018-12-05 16:23:12 · 2130 阅读 · 0 评论 -
LeetCode400.第N个数字(C++实现)
题目描述解题思路这个题目猛一看没看懂啥意思。。其实呢?他就是说m位的整数可以看做有m个数字,按照整数从小到大的顺序,求第n个数字是什么?最简单想到的思路就是用字符串处理。把整数序列都存到字符串里面,那么小标为n-1的数字就是啦,但是明显这样会超时。@@换一种思路->>>>>发现这个是有一些数字规律的,那之后我们如何找到第n个数字是什么呢...原创 2018-12-08 17:53:26 · 1399 阅读 · 0 评论 -
LeetCode438. 找到字符串中所有字母异位词(C++实现)
题目描述给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始...原创 2018-12-14 09:19:38 · 1428 阅读 · 0 评论 -
LeetCode501. 二叉搜索树中的众数(C++实现)
题目描述给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:...原创 2018-12-20 09:43:27 · 1067 阅读 · 0 评论 -
24点问题
Description游戏规则:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利。 程序目的:判断给出的4个数字是否可以凑成24,并输出判断结果。Input4个1-10的数字。[数字允许重复,测试用例保证无异常数字]Output如能凑成24,输出YES,反之则输出NOTSample Input7 2 1 10 1 1 1 13 3 3 3Sa...原创 2018-10-23 16:52:39 · 3986 阅读 · 0 评论