算法习题
Track48
zhengzhaozuo
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
即计算 x 的 n 次幂函数
50. Pow(x, n)难度中等608实现pow(x,n),即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 <x< 100.0-231<=...原创 2021-03-17 09:39:19 · 1367 阅读 · 1 评论 -
栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3)原创 2021-03-11 14:00:56 · 123 阅读 · 0 评论 -
二叉树的层次排序
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]解题:使用队列可以解决/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;...原创 2021-03-11 10:13:48 · 816 阅读 · 0 评论 -
电话号码的字母组合--递归
坑!Python 列表注意append和+的区别1、list与字符串相加:list+=“abc” 结果是list==['a','b','c']而如果用append的话,就是list.append("abc"),结果是["abc"]2、list与list相加:list+list的结果是直接拼接list.append()的结果是将参数作为一个整体加到list中:!!注意append() sort() reverse()都是直接作用在变量上,没有返回值>>>..原创 2020-11-23 12:55:25 · 405 阅读 · 0 评论 -
最接近的三数之和--双指针
纪念2020第一次完美的A!坑:1、Python的sort是直接作用在列表上,没有返回值题目:给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.le...原创 2020-11-22 23:39:17 · 147 阅读 · 0 评论 -
巨人排队
我的算法写的好辛苦:题目描述巨人国的小学生放假了,老师要给小朋友们排队了。可是这个老师有强迫症,一定要路队上的小朋友按照身高从高到矮排序(也就是排在前面的不能比后面的矮)。小朋友呢也很调皮,一旦老师给他排好队就不愿意动了。这个时候小朋友们一个一个的从教室里出来了,每个小朋友一出来老师就要给小朋友安排好位置。请问老师最少要给小朋友排几条路队呢?输入对于每组数据,第一行两个数n,表示小...原创 2019-06-06 20:34:32 · 375 阅读 · 0 评论 -
验证二叉搜索树
这是一个中等题,但是难度很低虽然知道二叉搜索树,但是写代码时,就忘了概念最初写的(错误)输入:[10,5,15,null,null,6,20]输出:true预期:false题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也...原创 2019-06-12 16:41:01 · 397 阅读 · 0 评论 -
整数转罗马数字
这道题我哭了,不是难,终于学会了罗马数字罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗...原创 2019-05-28 19:27:29 · 176 阅读 · 0 评论 -
盛最多水的容器(双指针,短的向中间移)
这道题有些面善,大二的时候去参加字节跳动的笔试,有一道算法题就是这个,我当时可能写的是穷举我自己写的是穷举,时间复杂度是O(n^2)class Solution {public: int maxArea(vector<int>& height) { int max=0; int c; for(int ...原创 2019-05-28 19:04:14 · 250 阅读 · 0 评论 -
整数反转(整数溢出判断)
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−2^31, 2^31− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。...原创 2019-05-28 14:05:20 · 3254 阅读 · 0 评论 -
Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的...原创 2019-05-28 13:32:45 · 233 阅读 · 0 评论 -
把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。/*对vector容器内的数据进行排序,按照 将a和b转为string后若 a+b<b+a a排在在前 的规则排序,如 2 21 因为 212 < 221 所以 排序后为 21 2...原创 2019-05-12 23:38:31 · 128 阅读 · 0 评论 -
最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入: 2736输出: 7236解释: 交换数字2和数字7。思路:将数字转化为数组之后,降序排序,寻找到第一个与原数组位置相同值不一样的数,然后将降序后的数组该位置值在原数组寻找,将其与原数组该位置的值进行swap,即可答案。重点:搜索值的时候应该从原数组的后面向前扫描,否则会出错,实例1...原创 2019-05-21 02:26:56 · 674 阅读 · 0 评论 -
回文子串个数| 最长回文串
第一题 回文串个数给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: "abc"输出: 3解释: 三个回文子串: "a", "b", "c".示例 2:输入: "aaa"输出: 6说明: 6个回文子串: "a", "a", "a", "aa", "aa",...原创 2019-05-20 23:32:22 · 921 阅读 · 0 评论 -
C++ accumulate
不要忘了加#include<numeric>1.累加求和int sum = accumulate(vec.begin() , vec.end() , a);a是初值,accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。2.字符串连接可以使用accumulate把string型的vector容器中的元素连接起来:...原创 2019-06-12 16:47:30 · 1032 阅读 · 0 评论 -
C++中的各种进制转换函数汇总
原 C++中的各种进制转换函数汇总 置顶 2018年06月10日 22:09:10 小·幸·运 阅读数:93...转载 2019-06-12 16:55:27 · 2395 阅读 · 0 评论 -
机器人走迷宫
有一个愚蠢的机器人走进一个w*h的迷宫,迷宫里有空地和陷阱。他想要访问迷宫的每个方格,但是它很笨,只会按照指令的方向走。当机器人不能走的时候,也就是下一步会遇到陷阱、迷宫边界或者访问过的格子,它会向右转90度(顺时针旋转90度,不能访问已经访问过的方格,且在原地只转一次,移动后可获得又一次旋转机会)。请问这个机器人最多可以经过多少个方格。输入对于每组数据,第一行两个数w和h,表示迷宫的行...原创 2019-06-06 10:33:18 · 2979 阅读 · 0 评论 -
a+b问题
题目描述读入两个小于100的正整数A和B,计算A+B,注意: A+B的每一位由对应的英文字母给出。输入测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为zero时输入结束,相应的结果不要输出.输出对每个测试用例输出1行,即A+B的值.样例输入one + two =three four + five si...原创 2019-06-05 00:33:20 · 684 阅读 · 0 评论 -
1006: 平方和与立方和(强制转化long long)
题目描述给定一段n与m之间连续的整数(包括n和m),求出他们中所有偶数的平方和以及所有奇数的立方和。输入输入数据包含多组测试实例,每组测试实例包含一行,两个整数m和n(0 <= n<= 10000,0 <= m <= 10000)输出对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇...原创 2019-06-15 08:24:53 · 509 阅读 · 0 评论 -
惠民工程(最小生成树)
惠民工程Description市政府“惠民工程”的目标是在全市n个居民点间之架设煤气管道(但不一定有直接的管道相连,只要能间接通过管道可达即可)。很显然最多可架设 n(n-1)/2条管道,然而实际上要连通n个居民点只需架设n-1条管道就可以了。现请你编写程序,计算出该惠民工程需要的最低成本。Input测试输入包含若干测试用例。每个测试用例的第1行给出居民点数目M ( <...原创 2019-06-15 08:01:16 · 390 阅读 · 0 评论 -
矩阵面积
在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。示例:输入: -3, 0, 3, 4, 0, -1, 9, 2输出: 45思路,重叠部分宽要么为0,要么是(最靠左的右边)与(最靠右的左边)相减,同理,高也是由于相减时出现整数溢出,相减前需要转化为long类型class Solution {...原创 2019-06-01 20:27:33 · 2196 阅读 · 0 评论 -
最大整除子集——动态规划与数学原理结合
给出一个由无重复的正整数组成的集合, 找出其中最大的整除子集, 子集中任意一对 (Si, Sj) 都要满足: Si% Sj= 0 或 Sj% Si= 0。如果有多个目标子集,返回其中任何一个均可。示例 1:集合: [1,2,3]结果: [1,2] (当然, [1,3] 也正确)直觉告诉我先排个序是很稳的,但是一般动态规划都是计算什么解的长度,解的最大最小值之类的,突然要...原创 2019-06-01 20:02:09 · 532 阅读 · 0 评论 -
山脉数组
给定一个整数数组A,如果它是有效的山脉数组就返回true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在0 < i< A.length - 1条件下,存在i使得:A[0] < A[1] < ... A[i-1] < A[i]A[i] > A[i+1] > ....原创 2019-06-06 21:20:39 · 864 阅读 · 0 评论 -
最长上升子序列 (LIS)
最长上升子序列(LongestIncreasing Subsequence),简称LIS,也有些情况求的是最长非降序子序列,二者区别就是序列中是否可以有相等的数。假设我们有一个序列 b i,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们也可以从中得到一些上升的子序列(ai1, ai2, …, aiK),...转载 2019-06-06 20:51:52 · 974 阅读 · 0 评论 -
upper_bound()与low_bound() 及其返回值问题
前提:一个非降序列!!!!!!#include "algorithm"upper_bound() 与 lower _bound()都是 < algorithm > 的一个二分插画早函数 比较高效(log的时间复杂度)并且 方便语法格式lower_bound(数组首地址,数组尾地址,待查元素的值) 由于函数返回的值是 迭代器(似乎是???)所以还要减去数组首地址才是那个值的...转载 2019-06-06 13:38:02 · 868 阅读 · 0 评论 -
求根到叶子节点数字之和
给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径1->2->3代表数字123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25还蛮简单的,就是递归调用/*...原创 2019-05-19 23:34:08 · 375 阅读 · 0 评论 -
最小栈问题
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。这道题之前看过漫画,竟然一次运行成功,也是神奇。注意!!!当前最小值不入最小栈class Solution {public: stack <int> a; stack <int> min_stack; int min_num; ...原创 2019-04-25 22:11:03 · 461 阅读 · 0 评论 -
顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.注意!!!:第三个和第四个for循环前面判断的条件:原因,有可能第三个循环的和第一个循环的一样,所以要加个if判断...原创 2019-04-25 21:50:09 · 124 阅读 · 0 评论 -
二进制的1
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。我写的是第一种思路:但是忘了加flag=flag<<1第二种思路不是很懂链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8来源:牛客网//---------------正解-----------...原创 2019-04-01 23:40:59 · 330 阅读 · 0 评论 -
递归
递归最重要的两个概念:逻辑边界 递归式1、N的阶乘逻辑边界:F(0)=1递归式:F(x)=x*F(x-1)#include <stdio.h>#include <string.h>int F(int x){ if (x==0) return 1; return (x*F(x-1));} int main()...原创 2019-03-13 17:13:30 · 181 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39题目不能直接用递归,可能是因为循环递归调用,时间复杂度太高,且栈也很高一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。这个也是斐波那契数列问题。青蛙跳八级==跳六级+跳七级方...原创 2019-03-25 15:46:50 · 177 阅读 · 0 评论 -
用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。push是直接push堆栈的顶元素pop是先将堆栈A弹到另一个栈B,然后将B的元素弹出,再将其他元素压入Aqueue和stack千万注意:1、for循环当中条件判断中有.size(),因为在pop\push之后会size会动态变化最好是使用while(!stack1.empty())...原创 2019-03-25 15:10:50 · 144 阅读 · 0 评论 -
散列(hashtable)
散列作为常用 的数据结构,之前上课的时候书上没有太多的篇章有讲,因此专门复习一下1、空间换时间先看一个简单的问题:给出N个正整数,再给出M个正整数,求问这M个整数的每一个是否有在N中出现,其中N,M<10^5;对于这类问题,最直观的就是对于每个M,遍历N,但是复杂度达到了O(N*M),显然复杂度过大那么给出的解决方案就是以空间换取时间,即设定一个bool型数组boolTabl...原创 2019-03-13 00:31:48 · 231 阅读 · 0 评论 -
STL入门学习与STL总结--更新中
从大一下学习C++,老师就说STL是C++精华,“C语言的指针,C++的STL”,结果一直都没什么时间专门去学STL,结果现在到了大三下为了保研夏令营,要开始学习STL咯;目录1、STL介绍2、STL容器--vector1、vector的定义:2、vector访问3、vector实例解析4、vector的常见用途2、STL容器 --set1、set定义...原创 2019-03-15 19:30:58 · 1290 阅读 · 0 评论 -
数学问题--算法
1、神奇的数字-6174就是给定一个四位数,最大的全排列减去最小的全排列的结果反复运算,终会到达6174思路是:给定一个四位的整形数组,使用algorithm的sort进行从大到小排列,然后通过两个函数进行最大(小)排列运算;然后将结果也带入运算。这道题难度低。#include <algorithm>#include <iostream>usi...原创 2019-03-19 14:59:05 · 316 阅读 · 0 评论 -
我和柯南拿石头
题目描述:最近阿笠博士发明了一种新的游戏,他邀请步美(ayumi)和柯南(conan)来玩。 游戏的规则是这样的。有一堆石子,石子的总数是n(0< n< =30)个。步美和柯南轮流从这堆石子中拿走m*m个石子(m必须是一个正整数)。假如在轮到某个人取石子的时候,这个人没有石子可以取(也就是石子已经被另一个人在上次取光了),则这个人就是失败者。 两个人开始玩游戏,每次都是步美先取,...原创 2019-03-03 21:24:24 · 356 阅读 · 0 评论 -
做OJ时/C/C++语法
1、scanf()的输出为成功读取多少个数2、cin/cout浪费大量时间,超时可转化为printf scanf3、同一个程序,不要既使用了printf 又用了cout,可能会出错4、超过就使用long long ,别忘了LLlong lomng bigcnum=12345678912346LL;5、ASCII 48 65 976、C++的cin cout的头文件是<...原创 2019-03-03 19:01:21 · 564 阅读 · 0 评论 -
栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,...原创 2019-04-26 14:34:15 · 168 阅读 · 0 评论 -
层次打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {...原创 2019-04-26 14:50:52 · 678 阅读 · 0 评论 -
最大连续子数组
题目:给一个数组,返回它的最大连续子序列的和(子向量的长度至少是1)例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。使用动态规划F(i):以array[i]为末尾元素的子数组的和的最大值,子数组的元素的相对位置不变F(i)=max(F(i-1)+array[i] , array[i])res:所有子数组的和的最大值re...原创 2019-05-09 18:20:17 · 291 阅读 · 0 评论
分享