
编程题
Salmon_lee
这个作者很懒,什么都没留下…
展开
-
【leetcode 239】滑动窗口
【leetcode 239】滑动窗口 题解原创 2022-06-25 22:52:17 · 294 阅读 · 0 评论 -
【leetcode 16】三数之和
【leetcode 16】三数之和 题解原创 2022-06-25 20:42:51 · 283 阅读 · 0 评论 -
【华为机考练习】HJ71 字符串通配符
这题较难。使用递归容易导致超时,使用DP有许多需要注意的地方。该题的牛客网题解大多数没有考虑全面所有情况,这里给出我的解法。1. *的匹配需要注意边界情况。2. *和?只能匹配字母和数字。#include <iostream>#include <cstring>#include <algorithm>using namespace std;bool dp[101][101];int main(){ string a, b..原创 2021-12-29 11:27:57 · 534 阅读 · 0 评论 -
【华为机考练习】火车进站
本题数据规模较小,使用拷贝out和st的方式也能通过。以下代码写的很好,记录一下。#include <algorithm>#include <iostream>#include <stack>#include <vector>using namespace std;void dfs(const vector<int>& in, int index, stack<int>& st, vector&.原创 2021-12-28 17:07:10 · 843 阅读 · 0 评论 -
C++ 符号栈(加强版)
描述给定一个字符串描述的算术表达式,计算出结果值。输入字符串长度不超过 100 ,合法的字符包括”+,-,*,/,(,)”,”0-9”。注意事项数字可能会带有符号前缀,需要注意。可以使用string::stoi()将字符串转成数字,包括前缀-,+。具体做法用栈来解决括号,我们用一个栈记录刚刚的计算结果,每次都与栈顶元素计算,然后加入栈顶,用另一个栈记录包括括号在内的所有运算符,根据运算优先级来计算第一个栈中的内容。因为不用考虑括号的合法性,我们可以在栈中添加...原创 2021-12-25 15:29:52 · 896 阅读 · 0 评论 -
消失的两个数字(1~N缺两个数)
问题描述给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?解题算法法一:位运算class Solution {public: //数组完全可能是乱序 vector<int> missingTwo(vector<int>& nums) { vector<int> res; //法一:异或法 想办法将两个数分开,有点类似一si原创 2020-10-17 23:40:04 · 2838 阅读 · 0 评论 -
相交链表(浪漫指针相遇法)
走到尽头见不到你,于是走过你来时的路,等到相遇时才发现,你也走过我来时的路。题目Leetcode 160:找到两个单链表相交的起始节点解法一种比较巧妙的方式是,分别为链表A和链表B设置指针A和指针B,然后开始遍历链表,如果遍历完当前链表,则将指针指向另外一个链表的头部继续遍历,直至两个指针相遇。若两个链表相交,则指针A和指针B必定在相交结点相遇;若两个结点不相交,则将会同时到达NULL。代码(JAVA)public ListNode getIntersectionNod.原创 2020-06-23 23:51:49 · 542 阅读 · 0 评论 -
【HDOJ 2544 最短路】Dijkstra / Bellman-Ford 入门
本文的基础知识见:算法导论第24章:单源最短路径入门题:HDOJ 2544 最短路Dijkstra算法算法实现:邻接矩阵 + 维护结点的d值 + 每次取min{d}入队 & 松弛运行时间:未用优先队列,O(V²)#include <iostream>#include <cstring>using namespace std;con...原创 2018-09-06 21:50:27 · 305 阅读 · 0 评论 -
【HDU1166 敌兵布阵】 线段树、树状数组入门(1)
数据结构介绍线段树(Segment Tree)树状数组,即二叉索引树(Binary Index Tree)典型例题HDU1166敌兵布阵这题只涉及到单点修改,关于区间修改:【洛谷模板题】 线段树、树状数组入门(2)线段树解法#include <iostream>using namespace std;#define LEFT(x) (x <&...原创 2018-08-21 00:12:37 · 253 阅读 · 0 评论 -
【洛谷模板题】 线段树、树状数组入门(2)
题目:https://www.luogu.org/problemnew/show/P3372线段树(含区间修改)#include<iostream>using namespace std;#define LEFT(x) (x << 1)#define RIGHT(x) ((x << 1) | 1)long long seg[100005 * ...原创 2018-08-21 21:54:59 · 287 阅读 · 0 评论 -
【洛谷模板题 最小生成树】kruskal算法入门
Kruskal算法 最小生成树算法知识点: 算法导论第23章:最小生成树#include <iostream>#include <iomanip>#include <cmath>#include <cstring>#include <algorithm>using namespace std;struct Edge...原创 2018-08-31 13:02:52 · 445 阅读 · 0 评论 -
【HDOJ 3342 Legal or Not】拓扑排序入门
关于拓扑排序的基础知识:算法导论第22章:基本的图算法#include <iostream>#include <iomanip>#include <cstring>#include <vector>#include <list>#include <stack>using namespace std;vec...原创 2018-08-31 11:23:23 · 204 阅读 · 0 评论 -
生理周期(中国剩余定理)
【问题描述】人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰...原创 2018-07-16 23:11:44 · 455 阅读 · 0 评论 -
最少钱币数(DP)
【问题描述】这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1个 5 元,或者 3 个 5 元,或者 1 个 5 元、1个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币...原创 2018-07-17 00:11:03 · 2459 阅读 · 0 评论 -
小Q硬币组合的O(logn)解法
此题为腾讯机试题目,网络中的最优解法是位运算异或算法,时间复杂度为O(n),而此题n的规模达到了10^18,因此这个算法是不行的。本文将介绍一种在平均情况下复杂度为O(lgn)的分治+位运算解法,拉到下方即可。【题目大意】小Q非常富有,拥有非常多的硬币,小Q的拥有的硬币是有规律的,对于所有的非负整数K,小Q恰好各有两个数值为2^k的硬币,所以小Q拥有的硬币是1,1,2,2,4,4……...原创 2018-07-24 23:24:24 · 1013 阅读 · 1 评论 -
【牛客ACM暑期多校】PACM Team(四维01背包+记录路径)
题目描述Eddy was a contestant participating in ACM ICPC contests. ACM is short for Algorithm, Coding, Math. Since in the ACM contest, the most important knowledge is about algorithm, followed by coding(...原创 2018-07-29 19:42:52 · 243 阅读 · 0 评论 -
【杭电ACM多校第二场】Distinct Values(双指针+优先队列)
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3894 Accepted Submission(s): 1303 Problem Description ...原创 2018-07-29 20:53:34 · 274 阅读 · 0 评论 -
小希的数表(枚举)
【问题描述】Gardon 昨天给小希布置了一道作业,即根据一张由不超过 5000 的 N(3<=N<=100)个正整数组成的数表两两相加得到 N*(N-1)/2 个和,然后再将它们排序。例如,如果数表里含有四个数 1,3,4,9,那么正确答案是 4,5,7,10,12,13。小希做完作业以后出去玩了一阵,可是下午回家时发现原来的那张数表不见了,好在她做出的答案还在,你能帮助她根据她...原创 2018-07-29 20:57:12 · 760 阅读 · 0 评论 -
【洛谷P1020】导弹拦截(DP+贪心)
本题由两问构成:第一问是求最长非递增子序列的长度,可以用O(n*logn)的DP求解。我们已经知道O(n*n)的做法,dp[i] = max{dp[j]+1, 1},其中j<i且a[j]≥a[i]。重点在于在a[i]前面找到一个比a[i]大的数a[j],它对应的dp[j]最大。而O(n*logn)做法中,dp[i]保存最大拦截量为i时,最后一枚导弹高度的最大值。假设存在一个序列...原创 2018-08-04 17:24:03 · 956 阅读 · 0 评论 -
【HOJ】Elections(带概率的01背包)
题面Elections Time Limit: 10000ms, Special Time Limit:25000ms, Memory Limit:524288KB Total submit users: 9, Accepted users: 4 Problem 14121 : No special judgement Problem description Jenabk...原创 2018-07-31 11:36:03 · 307 阅读 · 0 评论 -
Paint题解 DP+二分
DescriptionYou are painting a fence with n sections, numbered from 1 to n. There are k artists, each willing to paint their design on a specific portion of the fence. However, artists will never ag...原创 2018-08-18 16:05:33 · 493 阅读 · 0 评论