
算法题
各大OJ算法题题解
MIIEo
到一个好的地方,心态要保持好,因为第一名第二名这个事情是没有意义的。名次只是给你一些信息,但是大家的成就不是和别人竞赛,真正是和自己竞赛。一个人他到最后盖棺论定的时候,所有世界上其他人对你的评价都是不重要的,最重要的评价只有一个人,你自己摸着你的胸脯问,我在这个世界上,是不是尽了我最大的力量,发挥出我最大的光和热。一个人假如说能够有信心的说我做到了这一点,那么我觉得你就是最成功的最成功的人。——姚老师
展开
-
欧拉计划22
1. 问题https://pe-cn.github.io/22/2. 代码/************************************************************************* > File Name: euler22.cpp > Author: > Mail: > Created Time: Mon 12 Apr 2021 01:59:02 PM CST ******************************原创 2021-04-12 14:12:48 · 294 阅读 · 0 评论 -
海贼OJ590
/************************************************************************* > File Name: oj590.cpp > Author: > Mail: > Created Time: Sun 11 Apr 2021 08:13:26 PM CST ************************************************************************/原创 2021-04-11 22:23:14 · 404 阅读 · 0 评论 -
欧拉计划18
1. 问题https://pe-cn.github.io/18/2. 代码两个思路:从上往下,从下往上/************************************************************************* > File Name: euler18.cpp > Author: > Mail: > Created Time: Sun 11 Apr 2021 08:13:26 PM CST ***************原创 2021-04-11 22:19:41 · 128 阅读 · 0 评论 -
欧拉计划15
1. 题目https://pe-cn.github.io/15/2. 代码/************************************************************************* > File Name: euler15.cpp > Author: > Mail: > Created Time: Wed 31 Mar 2021 09:33:24 PM CST ******************************原创 2021-04-11 19:49:00 · 179 阅读 · 0 评论 -
单峰数组求峰值,二分思想,LeetCode862
LeetCode862题目的特点只有一个峰值,且相邻数组元素不相等方法一:顺序查找class Solution {public: int peakIndexInMountainArray(vector<int>& arr) { for (int i = 1; i < arr.size(); i++) { if (arr[i] < arr[i - 1]) { return i - 1;原创 2020-12-18 20:42:22 · 1181 阅读 · 2 评论 -
LeetCode题解,LCP 12. 小张刷题计划
LCP 12. 小张刷题计划这个题是我调试时间最长的一道,帮助理解了贪心策略class Solution {private: bool canDone(vector<int>& time, int m, int T){ int day=0; int worktime=0; int len = time.size(); bool help = true;//true表示可求助 bool note原创 2020-08-13 17:40:25 · 278 阅读 · 0 评论 -
“连续”问题汇总
剑指 Offer 57-II 和为s的连续正数序列LeetCode 53 最大子序和LeetCode 121 买卖股票的最佳时机LeetCode 152 乘积最大子数组LeetCode 978 最长湍流子数组剑指 Offer 42 连续子数组的最大和LeetCode 128 最长连续序列LeetCode 674 最长连续递增序列LeetCode 221 最大正方形LeetCode 1277 统计全为 1 的正方形子矩阵...原创 2020-08-12 18:45:49 · 302 阅读 · 0 评论 -
并查集详解(转载)
本文内容为原博客的copy,仅供学习之用,原文链接文章目录杭电题目并查集引入一个生动的例子优化之后的实现杭电题目解答并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)杭电题目来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个转载 2020-08-05 17:01:22 · 107 阅读 · 0 评论 -
反转链表
思路一:可以从头开始遍历链表,每遍历一个节点,用头插法将该节点插入新的链表中。这个思路适合翻转整个链表,缺点是需要新建一个哨兵结点。class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* hair = new ListNode(0); ListNode* p = head; ListNode* pre = hair; while(p!=N原创 2020-08-03 23:59:24 · 815 阅读 · 0 评论 -
LeetCode871,最低加油次数,大顶堆+DP两种思路
LeetCode871算法思想:贪心重要数据结构:大顶堆大致思路:每经过一个加油站,就把油放进油库里,注意不是加油,而是放进一个油库,这里不计加油次数,之后到不了下一个加油站或者终点的时候,才从油库里取出最大份的油加上,加油次数自增1,这样一直加油到能到下一个加油站或者终点。这样看,本题的关键就是维护一个数据结构,能够高效地从一组数中返回最大值。(大顶堆)细致思路:在没经过最后一个加油站之前,初始位置0作为第一个位置,之后每个加油站分别记为一个位置,在每个位置都要考虑如下的事情:第一步,原创 2020-07-26 00:41:14 · 301 阅读 · 0 评论 -
PAT1049测试点2的坑
开场白PAT1049地址下面是我的提交记录一开始我的代码长得这样#include <iostream>using namespace std;int main() { int n; cin >> n; double sum = 0.0, temp; for (int i = 1; i <= n; i++) { cin >> temp; sum = sum + temp * i * (n -原创 2020-07-11 19:28:30 · 951 阅读 · 3 评论 -
Leetcode989,占个坑,这个题我觉得体现了编程的本质
Leetcode989给出自己的AC代码。自己的解法,很原始,很繁琐,需要精炼,抽出共性的代码段。而且变量维护做得也很差,程序的出口也比较乱。/** * Note: The returned array must be malloced, assume caller calls free(). */int* addToArrayForm(int* A, int ASize, int K, int* returnSize){ int* Karray = (int *)mallo原创 2020-06-29 11:07:16 · 191 阅读 · 0 评论 -
Leetcode665,执行20ms的范例值得深思
Leetcode665思路每次去掉数组中的一个元素,判断残数组是不是递增的,若是存在一个递增的残数组,则返回true,否则,返回false。自己的代码int isInc(int *nums, int numsSize, int index){ int ret = 1; int* tmp = (int *)malloc(numsSize*sizeof(int)); int j=0; for(int i=0;i<numsSize;i++){ if(i原创 2020-06-27 21:37:28 · 125 阅读 · 0 评论 -
Leetcode566,高阶指针形参的处理
Leetcode566/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free(). */int** matrixReshape原创 2020-06-27 19:18:31 · 120 阅读 · 0 评论 -
Leetcode1460,源状态到目标状态,判是否可达
Leetcode1460源状态到目标状态,判是否可达本题转化成判断两数组元素所分别构成的两个集合是否相等对数组中的元素进行特定的操作,判断能否达到目标状态。这是一类经典题目。不过当前这个Leetcode1460比较简单。简单证明因为相邻两个元素属于子数组,冒泡排序的过程就涉及相邻两个元素构成的子数组的翻转。所以,如果两个数组arr和target分别进行冒泡排序且能得到同样的升序(或降序)序列,那么对target数组进行刚才冒泡排序过程中的逆操作,这个target数组又能回到一开始的初始状态了。所以原创 2020-06-27 14:10:26 · 300 阅读 · 0 评论 -
Leetcode1389,数组在指定位置插入元素,C代码实现(考虑原数组元素连续和不连续两种情况)
Leetcode1389我们学习的链表插入元素,是O(1)的操作数组插入元素,如果原数组中的元素是连续存放的,如[0, 1 ,2 ,3 ,4 ,5 ,NULL, NULL, NULL],这样的情景比较常见,链表也是这种情形。但是,也有原数组中的元素没有连续存放的情况,如[0, 1, NULL, 2, 3, NULL, 4, 5, NULL],这样的情景就要留心了。下面是综合考虑以上两种情况的代码实现,同样是Leetcode1389的AC代码/** * Note: The returned arr原创 2020-06-27 12:50:37 · 287 阅读 · 0 评论 -
Leetcode1365,刷新了我对leetcode判题系统的认知
Leetcode1365以前学的东西我记得很清楚!我之前学习的C的语法,初始化的语句都是执行一遍for(int i=0;i<10;i++){ int localvar = 0;//这个语句在执行的时候,仅执行一遍的, //也就是localvar被赋值0仅在第1次循环时执行,后边的9次循环不再执行这条语句。 //....}然而,leetcode认为我错了但是我的提交,莫名出错然后灵机一动,这么改了,就对了~我很迷茫下附出错代码//以下是错误代码/** *原创 2020-06-27 11:37:27 · 358 阅读 · 0 评论 -
Leetcode1486,重新学习C语言异或计算的写法
Leetcode1486C语言异或运算重温int l, r;int xor_value = l ^ r;AC代码如下int xor(int l, int r){ return l^r;}int xorOperation(int n, int start){ int ans = start; for(int i=1;i<n;i++){ int cur=0; cur = start+2*i; ans = xor(an原创 2020-06-27 10:12:31 · 151 阅读 · 0 评论 -
Leetcode1160,在这个题里用全局变量是我心中永远的痛
题目链接,Leetcode1160心痛的提交过程你能感受那种,自己在测代码OK的,但是一提交就错的心痛感吗?绝望中的猜想,迎来胜利的曙光是不是每次执行solution的时候,并没有清空Alph呢?一试,果然如此。//以下是错误解法,错在将Alph定义为全局变量int Alph[26];int isJizhu(char ** words, int index){ int res = 1; int beta[26] = {0}; for(int i=0;i<26原创 2020-06-26 19:46:37 · 709 阅读 · 0 评论 -
POJ1083
POJ1083题解POJ1083解题重点在如下几个地方题很简单,一定要看题目里面的那个图。要注意的只有一点,房间1和2前面是同一个走廊,所以从1移动到2只需要占用一个走廊,房间2和3前面不是同一个走廊,因此从2移动到3需要占用2个走廊。基本思路是开辟一个200的数组,表示所有房间前面的走廊,每个元素初始化为0,如果从m移动到n(假设m小于n,但是在程序中处理输入时需要判断两个数大小原创 2018-01-10 20:29:35 · 368 阅读 · 1 评论 -
POJ2262
POJ2262题解POJ2262解题重点在如下几个地方1> 快速判断一个数是不是素数 2> 找出某个数前后两个素数 3> 判断差是不是素数(找素数对部分代码的主要逻辑)SOURCE质量Problem: 2262 User: 20132430222Memory: 8836K Time: 657MSLanguage: C++ Re原创 2018-01-26 23:41:47 · 582 阅读 · 0 评论 -
POJ2739
POJ2739题解POJ2739解题重点在如下几个地方第一:计算出10000以内的素数表 第二:线段动态伸缩法求出所有可能解 第三:vector和queue的使用SOURCE质量Problem: 2739 User: 20132430222Memory: 228K Time: 0MSLanguage: C++ Result:原创 2018-01-07 12:23:00 · 298 阅读 · 0 评论 -
POJ3299
POJ3299题解POJ3299解题重点在如下几个地方第一:正确接收来自输入流的数据 第二:将数学公式正确翻译成C语言公式 第三:题目意思是任给两个变量求第三个,而不是像输入样例那样只给你T、DSOURCE代码质量如下:Problem: 3299 User: 20132430222Memory: 212K Time: 0MSLang原创 2018-01-05 23:09:24 · 370 阅读 · 0 评论 -
POJ2159
POJ2159题解POJ2159解题重点在如下几个地方第一:正确接收来自输入流的数据 第二:懵逼的我居然把冒泡写错了,啊。。。 第三:统计频率就AC了,不要想太复杂SOURCE质量Problem: 2159 User: 20132430222Memory: 160K Time: 63MSLanguage: C++ Result:原创 2018-01-06 16:10:24 · 250 阅读 · 0 评论