![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
那个松鼠很眼熟
这个作者很懒,什么都没留下…
展开
-
二叉搜索树BST结点的最小距离
原问题:输入一个BST的根节点,返回该树任意两结点间差值的最小值。我的代码(C++)class Solution {public: int minDiffInBST(TreeNode* root) { int const MAX_SIZE=100; int array[MAX_SIZE]; int length=0; inOrderTr...原创 2018-04-08 23:51:27 · 1087 阅读 · 0 评论 -
求最大三角形面积
问题:给出一群平面上的点,它们中的任意三个点就可以构成一个三角形。请找出所有可能的三角形中最大的面积值。我的代码:class Solution {public: double largestTriangleArea(vector<vector<int>>& points) { int size=points.size(); doub...原创 2018-04-09 03:56:59 · 1504 阅读 · 0 评论 -
在有序二维数组中查找一个整数
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路一:二维数组遍历寻找,最简单,时间复杂度O(N2)。代码略,运行时间11ms. 缺点:忽略了已知条件中二维数组的有序性。思路二:利用有序性, 1,对于该二维数组中任何一个元...原创 2018-04-16 23:30:43 · 465 阅读 · 0 评论 -
替换字符串内的空格(要求原位操作)
题目:输入一个字符串,将该字符串中的空格替换为'20%'并且输出。要求所有操作仅在该字符串上进行。思路:先遍历一遍该字符串,计算出空格的数量,从而知道新字符串的长度;然后从后向前依次替换。(注意:不能从前往后替换,因为'20%'是三个字符,替换后会使原串中的两个字符丢失,无法实现原位操作)代码:(出处:牛客网 爱吃柚子)链接:https://www.nowcoder.com/questionTer...原创 2018-04-17 00:31:42 · 211 阅读 · 0 评论 -
用两个栈实现一个队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。我的代码:class Solution{public: void push(int node) { stack1.push(node); } int pop() { int ele; while(!stack1.empty()){...原创 2018-04-17 02:44:23 · 105 阅读 · 0 评论 -
在递增数组中寻找 和为sum 的两个数
题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。思路一:双循环遍历,并用一个变量记录符合条件两数的积,最后输出积最小的两个数。时间复杂度 O(n²) 。#define vi vector<int>#define MAX_INT 99999999class Solution {public: ...原创 2018-04-17 04:28:32 · 701 阅读 · 0 评论 -
链表の反转
题目:输入一个链表,反转链表后,输出链表的所有元素。/*链表结构struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/思路一:新建一个空链表,将旧链表的头结点不断加到新链表的头上。(代码略)思路二:从链表的头结点开始依次反转每个结点。该算法的空间复...原创 2018-04-17 15:19:32 · 125 阅读 · 0 评论 -
内存的清除与复制
void *memset(void *s, int ch, size_t n); [头文件:memory.h或string.h]函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法.例子:如果要把一个char a[20...原创 2018-04-17 16:44:15 · 370 阅读 · 0 评论 -
青蛙跳台阶(斐波那契数列)
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路一:递归int JumpFloor(int n) { if(n==1) return 1; else if(n==2) return 2; return JumpFloor(n-1)+JumpFloor(n-2)...原创 2018-04-17 17:36:42 · 294 阅读 · 0 评论 -
变态跳台阶(2的幂次方)(一行代码解决)
题目:一个变态一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该变态跳上一个n级的台阶总共有多少种跳法。分析:每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一个台阶必须跳。所以共用2^(n-1)种情况。最快代码:return 1<<--number; (代码出处:https://www.nowco...原创 2018-04-17 18:21:17 · 752 阅读 · 0 评论 -
从上往下打印二叉树 (二叉树的BFS)
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 分析:BFS问题,借助队列即可。vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> res; if(root==NULL) return res; //这一步很重要,否则无法处理root=NULL的情况,会造...原创 2018-04-17 19:18:40 · 268 阅读 · 0 评论 -
最大公约数(GCD)问题
题目1:求两个正整数的最大公约数;(Greatest Common Divisor, GCD)题目2:求n个正整数的最大公约数;题目3:求两个正整数的最小公倍数;(Lowest Common Multiple, LCM)题目4:求n个正整数的最小公倍数。之所以将这四个问题写在一起,是因为它们的核心都为第一个问题:求两个数的最大公约数GCD。剩余三个问题都是基于它来写的。而计算最大公约数的方法有两个...原创 2018-04-22 19:52:18 · 1188 阅读 · 0 评论 -
第N个丑数
题目:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:新的丑数必然是由已经有的丑数乘以2、3或5中某一个因子而得到的。 假设我们已经有了前K个丑数,现在来计算第K+1个丑数。首先想到的是遍历这K个丑数,分别求出它们乘以2、3或5后得到的值,共3K个值,最后找...原创 2018-04-22 23:23:56 · 263 阅读 · 1 评论 -
STL重要容器:Map 总结
1原创 2018-04-23 00:24:49 · 120 阅读 · 0 评论 -
【字符串】字符串匹配:KMP算法
2原创 2018-04-19 03:03:08 · 90 阅读 · 0 评论 -
【字符串】彩色珠宝项链问题
题目:有一条彩色宝石项链,是由很多种不同的宝石组成的,包括红宝石,蓝宝石,钻石,翡翠,珍珠等。有一天国王把项链赏赐给了一个学者,并跟他说,你可以带走这条项链,但是王后很喜欢红宝石,蓝宝石,紫水晶,翡翠和钻石这五种,我要你从项链中截取连续的一小段还给我,这一段中必须包含所有的这五种宝石,剩下的部分你可以带走。如果无法找到则一个也无法带走。请帮助学者找出如何切分项链才能够拿到最多的宝石。 ...原创 2018-04-19 03:05:48 · 359 阅读 · 0 评论 -
【字符串】回文串
3原创 2018-04-19 14:47:27 · 280 阅读 · 0 评论 -
【字符串】C++中关于字符串操作的函数或关键字
#include <string>#include <iostream>using namespace std;string str,str1,str2;char sc[];本文所讨论的string均指头文件<string>里的string结构,所以必须先包含该头文件。【ASCII码(从小到大)】 48~57: 0~9 65~90...原创 2018-04-19 14:50:29 · 1172 阅读 · 0 评论 -
C++获取数组长度的方法
在不使用其他容器的情况下,用sizeof关键字来获取数组长度:template <class T>int length(T& a) { return sizeof(a) / sizeof(a[0]);}注意,目前就发现上面这一种方法,使用时直接用length(arr)即可,其中arr可以是任何类型。下面列举的都会出错://错误一template <class T&...原创 2018-04-26 03:48:39 · 4562 阅读 · 0 评论 -
大数相乘
题目:有两个用字符串表示的非常大的整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。核心:先不考虑进位,两乘数的第 i 位和第 j 位相乘后必然在乘积的第 i+j 位(指数组下标,非逻辑序号)。然后每次相乘时进位即可。int* multi(int* a, int *b,int len_a,int len_b) { int len_c = len_a + len_b ; int...原创 2018-04-26 14:28:26 · 170 阅读 · 0 评论 -
【排序总结】快排
快速排序是最常用的排序算法,基本思想是分治。随机找一个分割数,把比他小的数放他左边,比他大的数放他右边。对左边的数和右边的数再分别重复以上操作。void qsort(int* arr, int low, int high) { if (low < high) { int pivot = partition(arr, low, high); //用中心点将数组划分为两部分,并返回划分后...原创 2018-04-26 15:45:04 · 149 阅读 · 0 评论 -
【字符串】句子的反转
题目:将一个句子反转顺序,要求原位操作。例如:“i love c++”--->“c++ love i”。思路:先把整个字符串进行反转,这样的后果是每个单词内部也被反转,然后再调整单词内部。"i love c++"--->"++c evol i"--->"c++ love i"两次反转对应两个函数:allReverse(), wordReverse().//整个字符串的反转 v...原创 2018-04-26 17:15:23 · 392 阅读 · 0 评论 -
【字符串】字符串转数字
题目:将一个字符串转换成数字。例如:"123"-->123, "71.02"-->71.02.方法一,直接调用库函数atoi(const char*) 和atof(const char*) # include <stdio.h> # include <stdlib.h> int main () { ...原创 2018-04-27 17:45:44 · 866 阅读 · 0 评论 -
【BFS】推箱子问题
题目:大家一定玩过“推箱子”这个经典的游戏。具体规则就是在一个N*M的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。 如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。当箱子被推到目的地以后,游戏目标达成。 现在告诉你游戏开始是初始的...原创 2018-04-27 18:27:19 · 3014 阅读 · 0 评论 -
【BFS】走出迷宫的最短路径
题目:给出一个M*N的迷宫,0代表路,1代表墙。S和G分别代表初始位置和出口。求走出迷宫的最短路径。若走不出则返回-1.思路:经典的广度优先搜索。/*初始化队列q;初始化标记矩阵mask;起点start入队;while(q非空){ q队首元素tmp出队; if(tmp==目标状态){ 找到解, 退出循环; }; for(){ 所有与tmp相邻且未被访问的点入...原创 2018-04-27 18:51:02 · 1646 阅读 · 0 评论 -
【多级排序问题】学生成绩排名 & 比赛队伍积分榜
题目一:将期末考试所有学生的成绩按总分高低进行排序,若总分相同,则按语文成绩从高到低,若语文成绩相同,类似地依次考察数学、英语、物理、化学、学生拼音字母在字母表中的顺序。题目二:对某足球比赛的球队进行排名,排名规则如下:1、先比较积分,积分高者名次在前;2、如果积分相同则比较净胜球,净胜球多者名次在前;3、如果积分、净胜球都相同则比较进球数,进球数多者名次在前;4、对于积分、净胜球和进球数都一样的...原创 2018-05-07 19:36:23 · 598 阅读 · 0 评论 -
【动态规划】【交叉传递】买售股票的最大利益问题
题目:给一个非负数组,每个元素代表股票当天价格。你可以某天买入一支股票,在后面的另一天再售出去。如此多次交易后你能得到的最大利益是多少?每次交易股票需要付出固定的小费。(再次购买之前必须先出售股票,即不能同时拥有两支股票)...原创 2018-07-08 15:15:38 · 177 阅读 · 0 评论 -
【字符串】【动态规划】两个字符串间的最小编辑距离
1原创 2018-07-08 15:17:16 · 277 阅读 · 0 评论 -
【动态规划】纸币面额组合种类
题目:给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。(不区分顺序)【美团点评2017秋招笔试】...原创 2018-07-09 03:49:30 · 1808 阅读 · 0 评论 -
【动态规划】连续柱状图的最大矩形面积
题目:给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。【美团点评2017秋招笔试】...原创 2018-07-09 03:52:23 · 1147 阅读 · 1 评论 -
【CPX】【遍历】查找作弊ID【缺】
题目:现在我们需要查出一些作弊的问答社区中的ID,作弊有两种:1. A回答了B的问题,同时B回答了A的问题。那么A和B都是第一类作弊ID。2. 第一类作弊ID用户A、B同时回答了C的问题,那么C是第二类作弊ID。已知每个用户的ID是一串数字,一个问题可能有多个人回答。【搜狗2016研发岗笔试】输入描述: 每组数据第一行为总问题数N(N小于等于200000),第二行开始每行一个问题,第一个数字为提问...原创 2018-07-11 05:15:43 · 234 阅读 · 0 评论 -
矩阵最大的十字乘积
A[n,m]是一个n行m列的矩阵,a[i,j]表示A的第i行j列的元素,定义x[i,j]为A的第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,即x[i,j]=a[i,1]*a[i,2]*...*a[i,j-1]*...*a[i,m]*a[1,j]*a[2,j]...*a[i-1,j]*a[i+1,j]...*a[n,j],现输入非负整形的矩阵A[n,m],求MAX(x[i,j]...原创 2018-07-11 05:37:01 · 826 阅读 · 0 评论 -
【BFS】带门的迷宫
题目:假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到钥匙才能打开门。请设计一个算法,帮助探险家找到脱困的最短路径。如前所述,迷宫是通过一个二维矩阵表示的,每个元素的值的含义如下 0-墙,1-路,2-探险家的起始位置,3-迷宫的出口,...原创 2018-07-04 16:16:12 · 838 阅读 · 0 评论 -
【数组】根据字典顺序打印1~N之间的所有数
题目:给出一个正整数N,根据字典顺序返回1~N间的所有数。 【LeetCode 386】比如,输入N= 13,返回: [1,10,11,12,13,2,3,4,5,6,7,8,9]. 注意:输入的N最大可以达到5000 000,所以需要优化算法使其在时间和空间上尽可能地高效。 ...原创 2018-07-17 21:28:57 · 1757 阅读 · 0 评论 -
【字符串】最长的绝对路径
题目:形如"dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext"的字符串表示如下的系统文件结构:【LeetCode388】dir subdir1 subdir2 file.ext文件夹 dir 下包含一个空的子文件夹 subdir1 和一个包含有文件file.ext的子文件夹subdir2 .再比如"dir\n\tsubdir1\n...原创 2018-07-17 21:42:53 · 238 阅读 · 0 评论 -
分数的加减法
题目:输入形如“-1/2+3/7-9/1”这样的分数算式字符串,要求也以分数的形式输出正确的计算结果(整数写成分母为1的分数,另外输出结果必须是不可约的分数)。[Leetcode 592]思路:1,分数的加减法全部统一为加法,采用同化分母的方法,然后约分。2,约分需要用到最大公约数。3,隐藏的难点:字符串的处理。如何将输入的字符串切割成井然有序的各个数值和运算符,这一点可以用 sstream.h ...原创 2018-07-06 05:22:02 · 840 阅读 · 0 评论 -
关于连续的if语句和return语句
bool demo(int a,int b) { if (a < 0) return 0; else if (a < b) return 1;}bool demo(int a, int b) { if (a < 0) return 0; if (a < b && a>=0) return 1;}bool demo(i...原创 2018-07-06 07:11:52 · 5961 阅读 · 0 评论 -
【CPX】秒杀服务
实现一个简易的秒杀服务,有3个接口: 【2017拼多多笔试】1. 添加一个秒杀活动 addActivity(int startTime, int endTime, int goodsId, int limitQuantity)12345678910参数说明: * 时间区间为左闭右开:[st...原创 2018-07-12 19:47:53 · 239 阅读 · 0 评论 -
【STL】Set / Map
1原创 2018-07-12 22:07:21 · 127 阅读 · 0 评论 -
【数组】删除游戏
题目:There is a list of sorted integers from 1 to n. Starting from left to right, remove the first number and every other number afterward until you reach the end of the list.Repeat the previous step a...原创 2018-07-19 19:33:25 · 156 阅读 · 0 评论