oj 算法
文章平均质量分 57
oj题解及算法实现
什么战吕布
毕业于某农民学校,拥有超过13年的打诨经验。
展开
-
shopee面经算法题
给定一个长度为的数组,数组中每一个元素的值都在[1,N]之间,找到1~N中没有出现的数字居然有力扣原题其实这个题目是力扣的进阶版要求,本文采用两种时间复杂度O(n),空间O(1)的时间复杂度O(n),空间O(1)的时间复杂度O(n),空间O(1)的方法文章目录利用原数组空间i放到a[i]用负数打标记利用原数组空间i放到a[i]外循环遍历一遍数组,将i放到a[i]内循环直到遇到a[a[i]] == a[i]为止最后遍历一遍数组i不等于a[i]的放入ans时间复杂度:O(n)空间复杂度O(1原创 2021-09-02 07:59:37 · 558 阅读 · 0 评论 -
快排被卡random_shuffle解决
快排class Solution {public: void qksort(vector<int> &nums, int left, int right){ //对nums数组[left, right]段数据排序 if(left >= right)//越界,返回 baseline return; int low = left, high = right; int key = nums原创 2021-08-24 16:30:54 · 340 阅读 · 0 评论 -
输入n个整数,求该组数据中不重复数据的个数
文章目录解法一 暴力 O(n^2)解法二 排序 O(nlogn)解法三 空间换时间 O(max(n,m))解法一 暴力 O(n^2)双重循环遍历数组,记录不重复的数字。#include<stdio.h>#define N 20 //数据范围 int a[N];int main(){ int n, i, ans = 0,j; scanf("%d", &n); for(i = 0; i < n; i++) scanf("%d", &a[i]); for(原创 2021-04-24 11:33:55 · 2456 阅读 · 2 评论 -
【王道数据结构】两个线性表位置原地互换
文章目录题目思路伪码c代码题目已知在一维数组A[m+n]中依次存放两个线性表a1,a2,a3...ama_1,a_2,a_3...a_ma1,a2,a3...am和b1,b2,b3...bnb_1,b_2,b_3...b_nb1,b2,b3...bn。试编写一个函数将数组中两个顺序表的位置互换,即将b1,b2,b3...bnb_1,b_2,b_3...b_nb1,b2,b3...bn放在a1,a2,a3...ama_1,a_2,a_3...a_ma1,a2,a3...am原创 2021-03-21 11:34:15 · 354 阅读 · 0 评论 -
【王道数据结构】删除顺序表中所有值为x的元素
对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的元素思路:记录值为x元素的个数count对值不为x的元素,向前移动count个单位顺序表长减去count伪代码:void DelX(SqList &L, ElmType x){ int count = 0, i = 0; while(i < L.length){ if(x == L.data[i]) count++; else a[i-count原创 2021-03-21 08:37:48 · 4810 阅读 · 3 评论 -
【零基础学算法第二讲】算法的空间复杂度
在做题过程中会遇到一些空间限制,如下图的“内存限制”为128MB。这个128MB就限制了如果我们不开栈、没有递归、只开int数组的情况下,只允许将数组开到10710^7107这样的数量级。这个数字是怎么得到的呢?文章目录前置知识表示内存大小的几个单位常见的数值类型根据空间限制计算允许的数组大小练习题前置知识表示内存大小的几个单位内存的最小单元是一根导线,我们可以用通电来表示1,断电来表示0,也就是一根线只能表示两个数字,故内存使用的是二进制。我们将一根线称作一个二进制位(1 bit)表示内存大小原创 2020-08-26 12:50:50 · 1312 阅读 · 1 评论 -
【零基础学算法第一讲】算法的时间复杂度
计算机领域中,无论是升学还是面试,算法都是一个绕不过的坎儿。有的学校、公司对于算法这部分的得分比重占了很大一部分。所以算法的学习非常必要。这讲我们通过一个例子来说明什么是算法,什么是算法的时间复杂度,以及如何分析算法的时间复杂度。辣么我们就开始吧↓↓↓文章目录来看一个题目什么是算法时间复杂度:衡量算法好坏的主要指标之一为什么时间复杂度重要如何分析算法的时间复杂度常见时间复杂度大小比较常用的刷题网站来看一个题目明明的随机数:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成原创 2020-08-25 16:04:06 · 235 阅读 · 0 评论 -
【动态规划回溯】dp回溯查找可行解
三水的果捞题目背景三水非常喜欢吃水果捞,但是每次她都吃不完一整盒果捞,就会吃饱,而吃得太饱会不舒服。对于果捞里的每一块水果,三水都有不同的喜爱程度。她希望在不吃得太饱的基础上,可以尽可能多地吃掉自己喜欢的水果。你能帮帮她吗?题目描述吃饱的时候三水的饱腹感为W(W≤10000)W(W≤10000)W(W≤10000),超过这个饱腹感三水就会不舒服。在吃果捞之前,三水可能已经吃了一些别的东西,此时她的饱腹感为qqq。她这次点的水果捞里有 NNN 块水果,对三水来说,第 iii 块水果有 viv_iv原创 2020-07-09 17:32:49 · 541 阅读 · 0 评论 -
【动态规划】过河卒问题改编
小羽毛想吃辣条题目背景小羽毛和她的邻居约好了一起减肥,可是她想吃辣条。实在是忍不住家门口那个超市的诱惑,小羽毛悄咪咪跑出去买了一包辣条。出了超市门的小羽毛一眼就看见了邻居,不行,不能让邻居知道自己跑出来买辣条!小羽毛的家和超市仅仅隔着一个矩形小广场,所以她还是有希望迅速跑回家而不被邻居发现的。而邻居现在正在跟人聊天,所以只要不走得离邻居太近,邻居就不会发现她。她现在想知道自己有多少条路可以回家而不被邻居发现。题目描述以小羽毛的位置为原点,给出邻居和小羽毛家的位置坐标。由于小羽毛想快一点儿回家,她原创 2020-07-09 17:31:06 · 185 阅读 · 0 评论 -
暴搜输出可行解
三水和小羽毛的sum点游戏题目背景三水和小羽毛玩腻了二十四点,她们决定玩点新东西。小羽毛给出一个数字和以及NNN个数字,由三水给出这NNN个数字计算得出这个数字和的可能。由于这是一个新游戏,为了不让三水花太多的时间,两人约定只做加法。题目描述小羽毛给出一个数字和sum(sum≤1000)sum(sum≤1000)sum(sum≤1000)。随后给出N(N≤25)N(N≤25)N(N≤25)个数字的值,由三水从这NNN个数字中任意选取(同一个数字只能选取一次)若干,使其和恰好等于sumsumsu原创 2020-07-09 17:30:04 · 98 阅读 · 0 评论 -
01背包就地滚动
学了就地滚动,来做一个题吧。这个题解不写01背包也不写动态规划的实现写一位数组的就地滚动实现简单01背包:开心的金明 传送门题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的原创 2020-06-16 10:58:18 · 136 阅读 · 0 评论 -
炒鸡详细的深度优先搜索,dfs其实很简单!
dfs好久之前就想写一篇了,终于找到借口了 为了老弟来写一篇深度优先搜索吧!基本概念深度优先搜索(deepth first search)又叫dfs,基本思想是从给定点出发,选定一条路就一直走下去,不撞南墙不回头那种。不管你喜不喜欢,它就是这样专一。一直走到头撞了南墙发现当前路径不可行的时候,才回头这时候的回头是通过 栈 + 回溯 来实现的,那么具体怎么搞↓例题dfs应用有很多,最基本的就是迷宫求路径数的问题。比如我们选择如下的简单迷宫↓从a开始走,每次只能上下左右四个方向走一格,直到b终点结束。原创 2020-06-14 22:17:02 · 467 阅读 · 0 评论 -
【题解】超经典的剪枝回溯——小木棍
题目描述乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。输入描述:第一行为一个单独的整数N表示砍过以后的小木棍的总数。第二行为N个用空格隔开的正整数,表示N根小木棍的长度。输出描述:输出仅一行,表示要求的原始木棍的最小可能长度。示例1输入95 2 1 5 2 1 5 2 1输出6备注:1≤N≤601≤N≤601原创 2020-06-08 10:09:47 · 1467 阅读 · 0 评论 -
【题解】表达式计算其实很简单!!递归实现
雨神告诉俺们,表达式计算用递归最不容易出错。(确实不递归的话需要考虑的情况就很多了,容易错漏)本题解参考牛客网id 唯爱奕希依然 的代码。题目描述给出一个表达式,其中运算符仅包含+,-,*,/,^(加 减 乘 整除 乘方)要求求出表达式的最终值数据可能会出现括号情况,还有可能出现多余括号情况数据保证不会出现 ≥231\geq 2^{31}≥231 的答案(ps:说明可以用int存结果)数据可能会出现负数情况(ps:这里指的有负数情况下负数会用括号括起来)输入描述:仅一行,即为表达式输出描述原创 2020-05-27 15:43:06 · 894 阅读 · 0 评论 -
【题解】牛客吐泡泡——括号匹配 多组输入!+简单栈的运用
题目描述小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)例如:ooOOoooO经过一段时间以后会变成oO。输入描述:数据有多组,处理到文件结束。每组输入包含一行仅有’O’与’o’组成的字符串。输出描述:每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。输入ooOOoooO输出oO说明自左到右原创 2020-05-24 21:24:10 · 991 阅读 · 0 评论 -
【题解】进击的奶牛 洛谷P1824
题目请戳:洛谷P1824 进击的奶牛题目描述Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,…,xN (0<=xi<=1,000,000,000)。他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John想把这些牛安置在指定的隔间,所有牛中相邻两头的最近距离越大越好。那么,这个最大的最近距离是多少呢?输入格式第1行:两原创 2020-05-22 22:27:09 · 1288 阅读 · 3 评论 -
天梯赛练习:已知后序遍历和中序遍历,输出层序遍历
树的遍历给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 ...原创 2020-02-03 21:17:10 · 3131 阅读 · 2 评论