
leetcode
CoomCon
日常工作有点忙,可能不能及时回复请见谅。
此外已经远离pcdmis了最新的技术并不清楚。
最近在搞C .Qt
展开
-
leetcode(1392):最长快乐后缀
日常一练1. 题目概要2. 暴力法——超出时间限制class Solution {public: string longestPrefix(string s) { string res,temp; if(s.size()==0) return NULL; bool flag = false; for(int i=1;i<=s.size()-1;i++) //不包含本身 {原创 2020-08-25 17:05:43 · 264 阅读 · 0 评论 -
leetcode(696):计数二进制子串
文章目录1. 题目描述2. 标准答案3. 垃圾的我1. 题目描述2. 标准答案统计相邻0、1的故事,方法一:按字符分组思路与算法我们可以将字符串 s 按照 0和 1 的连续段分组,存在 counts数组中,例如 s=00111011,可以得到这样的counts 数组: counts={2,3,1,2}。这里 counts 数组中两个相邻的数一定代表的是两种不同的字符。假设 counts 数组中两个相邻的数字为 u 或者 v,它们对应着 u 个 0和 v 个 1,或者 u 个 1 和 v个原创 2020-08-10 17:39:19 · 321 阅读 · 0 评论 -
leetcode(93):复原IP地址
题目93:1.解题思路首先看到该题,第一反应是dfs+回溯,第二反应就是可不可以用动规。第三反应就是暴力求解:反正就是4~12个数,往里面插入点,分为三坨;复杂度也应该不是很高;直接循环提交后会发现特殊情况:‘010010’的处理;‘00’要写成‘0’,‘010’是不合理的;还需要额外处理这两个额外情况;初步反应两个方法:对处理后的string进行修正,再加一个修补函数,所要处理的问题,就是“删掉字符串中的’010’类型和将‘00’等多个0的情景减少为1个0"string -> i原创 2020-08-09 16:53:54 · 259 阅读 · 0 评论 -
leetcode(19):DFS模板||leetcode求组合总和||背包方案数||阿里0731漂洋过海笔试题
文章目录阿里0731份试题DFS模板:阿里0731份试题小强最近在研究某个飘洋过海的游戏。游戏可以看成一个n∗mn*mn∗m的方格图,从左上角(1,1)(1, 1)(1,1)到右下角的(n,m)(n, m)(n,m)有两种地面,CCC表示为陆地SSS表示海洋,每次穿行只能到达上下左右四个格子之一,不能走到方格图之外。在陆地之间穿行一格需要花费三点行动力,在海洋之间穿行一格需要花费2点行动力。但是从陆地和从海洋到陆地穿行则需要5点行动力。输入描述:第一行输入两个整数n,m,qn, m, qn,m原创 2020-09-11 09:32:04 · 266 阅读 · 0 评论 -
leetcode(18):字符串统计
字符串统计的题经常出现,大概题意就是这样的;输入一个字符串“asddweqdsadwqe”统计每个字符出现的次数,按统计个数从大到小输出字符和对应个数;如果个数相同,按照字典序输出;特地记录一下:此题一般有两种#include <iostream>#include <algorithm>#include <map>using namespace std;//重新定义排序算法bool comp(const pair<char,int> &a原创 2020-09-07 09:16:47 · 705 阅读 · 0 评论 -
leetcode(17):背包9讲||总结
该篇文章从网络搜刮的+自己的理解;自己在学文章目录1. 01背包问题1.1 问题描述1. 01背包问题1.1 问题描述题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 动规用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]原创 2020-08-18 14:43:24 · 509 阅读 · 0 评论 -
leetcode(16):匈牙利问题||素数伴侣
该题第一次接触是在HJ机式中第一次接触:HJ28素数伴侣该题和匈牙利问题非常相像;先介绍匈牙利问题;1. 匈牙利问题这篇文章写得很好:趣写算法系列之–匈牙利算法下面这篇文章也可以是2017中兴提前批试题;匈牙利算法——最大匹配问题详解可以先看上面两篇文章上面的例子是两列,也就是 m x 2的矩阵; 更容易理解。而且上面HJ28的题也是两列的。 也就是二分图一般情况下,可以分为两列的最佳匹配问题,就可以用匈牙利算法来做二分图定义设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交原创 2020-08-14 15:06:52 · 1148 阅读 · 0 评论 -
leetcode(15):华为HJ95||人民币转换
文章目录1. 题目描述2. 实现代码1. 题目描述题目描述考试题目和要点:1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分)2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分)3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“原创 2020-08-06 14:38:01 · 1104 阅读 · 0 评论 -
leetcode(14):字符串知识||多行字符串输入||HJ密码验证程序||1233leetcode||HJ字符统计
文章目录1 多行字符串输入1 多行字符串输入getline在不同编译器上效果不同;牛客网上多行字符串输入:1 方法 vector<string> str; string temp; while(getline(cin,temp)) { str.push_back(temp); }2 方法 vector<string> str; string temp; while(cin>>te原创 2020-08-05 15:06:40 · 388 阅读 · 0 评论 -
leetcode(13):自守数||括号匹配||
文章目录1.自守数2.括号匹配||海尔笔试1.自守数自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^ 2 = 625,76^ 2 = 5776,9376^ 2 = 87909376。请求出n以内的自守数的个数题目链接实现思路由上图看出 n*n - n 末尾是一个或者多个0; 所以可以用%10 %100等来判断;代码:#include<iostream>#include <vector>//#include <math.h>#inclu原创 2020-08-05 09:31:12 · 273 阅读 · 0 评论 -
leetcode(12): BFS||DFS||
BFS和DFS在二叉树和图中运用较多;文章目录1.BFS实现方式1.1 BFS (队列)1.BFS实现方式基本概念和知识——传送门1.1 BFS (队列)BFS实现基本上是基于队列的。众所周知,队列特性,FIFO(先进先出)。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tre原创 2020-08-03 20:39:05 · 225 阅读 · 0 评论 -
leetcode(11):求解立方根||四舍五入||小数保留||二分法
1.求解立方根之二分法C++保留小数不是很方便,可以直接在牛客编译器上添加 C语言头文件;#include <iostream>#include <stdlib.h>#include <stdio.h>using namespace std;double getCubeRoot(double input){ double ans = 0; if(input ==0) return 0; double left = 0原创 2020-08-03 09:23:43 · 1275 阅读 · 0 评论 -
leetcode(10):双指针||
文章目录1.双指针1.1 数组对撞1.2 快慢指针1.双指针双指针问题主要有 数组对撞,快慢指针两个问题双指针法充分使用了数组有序这一特征;双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。详细参考知乎文章1.1 数组对撞对撞数组适用于有序数组,也就是说当你遇到题目给定有序数组时,应该第一时间想到用对撞指针解题;例题:以LeetCode 881救生艇问题为例class Solution原创 2020-08-02 09:34:09 · 206 阅读 · 0 评论 -
leetcode(10): 动态规划
1.简介动态规划是运筹学中的内容。是求解决策过程(decision process)最优化的数学方法。也是笔试题中常会遇到的一类题。而且用动态规划方法比用其它方法求解更为方便2.分类动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。举例:线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等;树形动规:贪吃...原创 2020-04-30 00:05:42 · 425 阅读 · 0 评论 -
leetcode(9):二叉树||二叉树遍历||四叉树||八叉树
1.基本概念二叉树主要包含满二叉树完全二叉树二叉树的性质……二叉树的深度为 K,那么此二叉树最多有 2K-1 个结点二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。二叉树存储结构有两种顺序存储链式存储————————————————————————二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树。需要注意的是,顺序存储只适用于完全二叉树。换句话说,只有完全二叉树才可以使用顺序表存储。因此,如果我们想顺序存储普通二叉树,需要提前原创 2020-08-01 22:16:48 · 481 阅读 · 0 评论 -
leetcode(8):序列容器||MAP||哈希表||SET||数据结构
在c++中,头文件有#include <map>#include <hash_map>两种。这阆中map其实差不多,都提供了key-value的查询,但是本质上又差了很多;先说区别:构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数).存储结构。hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其memory数据结构是不一样的。那么什么时候需要用hash_map,什么时候需要用map?总体来说,原创 2020-07-30 19:38:57 · 197 阅读 · 0 评论 -
leetcode(7):图论Dijkstra||
这里写自定义目录标题1.迪杰斯特拉Dijkstra图论问题一般分为:单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径(有向)无权图(有向)有权图多源最短路径问题:求任意两顶点间的最短路径1.迪杰斯特拉Dijkstra有权图的单源最短路径算法——dijkstra;不能处理带负边权的情况,用邻接矩阵或邻接表存图Dijkstra进行进一步的堆优化以后时间复杂度成为O(nlogn),Floyd的O(n^3)原创 2020-07-29 22:58:49 · 649 阅读 · 0 评论 -
leetcode(6):C++判断一个数是不是素数的标准算法
leetcode 判断一个数是不是素数的标准算法判断素数是常用的算法,一般的算法都是从2循环到n-1时间复杂度较高O(n)明显存在效率低的问题。有人分析:对于每个数n,其实并不需要从2判断到n-1,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),据此并不需要遍历到n-1,遍历到sqrt(n)即可,因为若sqrt(n)左侧...原创 2020-05-03 00:25:33 · 509 阅读 · 2 评论 -
leetcode(5):快速幂||大数幂||大数幂模运算
近期听到群友笔试题:给定一个长度为n的int数组,请问可否随机组成2的n次方。如果可以输出组成的数,如果不可以输出-1首先看到上面这个题,有4个想法:反向思维:2的n次方的n=1,2,3…… n,循环暴力搜索正向思维:按题目要求随机排列组合,检查是否是2的n次方;二进制:由于是2的n次方,可以考虑微操作,2的n次方的规律就是:二进制中只有一个1。具体想法还没有想通(后续待补充)文章目录1.快速幂1.快速幂不管是正向搜索还是反向搜索,很有可能涉及到的知识就是计算2的n次幂将最近学习到原创 2020-07-23 15:08:06 · 1495 阅读 · 0 评论 -
leetcode(4):堆、栈和队列
文章目录1. 堆2. 栈3. 队3. 队列——先进先出1. 堆堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。2. 栈(stack)——先进后出,删除与加入均在栈顶操作栈也称为堆栈,是一种线性表。堆栈的特性: 最先放入堆栈中的内容最后被拿出来,最后放入堆栈中的内容最先被拿出来, 被称为先进后出、后进先出。堆栈中两个最重要的操作是PUSH和POP,两个是相反原创 2020-07-13 20:58:28 · 240 阅读 · 0 评论 -
leetcode(3):找零钱问题(贪心||动规)
leetcode(3):找零钱问题(贪心||动规)找零钱问题——题目大意:小明手上有零钱10元、5元、1元、5角、2角、1角若干,现需要找零57.8元,求出零钱数最少的组合方案1. 贪心算法贪心算法的由来和乌鸦喝水的故事差不多。简而言之,乌鸦喝水的时候呢,应该是先把大的石块丢进瓶子里,再把小的丢进瓶子里;在这里就是先用大的,依次用小的;一般情况下贪心算法就可以解决找零钱问题,而且代码比较简单,代码如下 #include<iostream> usin原创 2020-07-08 21:54:39 · 10534 阅读 · 0 评论 -
leetcode(2):异或问题||找只出现过1次||2次||
文章目录1.题目背景2.知识基础3.实现代码1.题目背景2.知识基础关于此类找只出现过一次的,基本上用异或解法就可以。异或用来接出现过一次的题,可以算是标准答案异或基础异或运算也称为XOR,其运算法则相当于不带进位的二进制加法。如果a、b两个二进制位不相同,则异或结果为1。如果a、b两个二进制位相同,异或结果为0。同为0,异为1. 异或符号在c/c++中用^表示。异或性质(1) 0^a = a. 0与任何数进行异或运算结果等于该数。(2) a^a = 0.原创 2020-07-07 15:10:31 · 266 阅读 · 0 评论 -
leetcode(1): C++ 单链表||翻转链表||相交链表||数据结构
背景,leetcode0002文章目录1.链表结构2.链表创建1.链表结构//定义链表结构struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} //初始化方法 可以不写};2.链表创建...原创 2020-03-27 19:30:07 · 302 阅读 · 0 评论 -
leetcode(0):VSCode配置C++
工欲善其事必先利其器支持C文章目录1.三步安装VSCODE1.1下载VSCode并安装1.2 打开VSC搜索C++直接下载安装1.3 下载mingw配置环境变量1.4 新建文件test.cpp2.额外配置2.1 launch.json2.2 tasks.json2.3 settings.json1.三步安装VSCODE1.1下载VSCode并安装传送门:https://code.visualstudio.com/Download我下载的是1.2 打开VSC搜索C++直接下载安装1.3 下载原创 2020-07-18 20:43:49 · 1405 阅读 · 0 评论