基础编程练习
对各类在线编程网站的编程题目进行总结,提高基础编程能力
十早韦up
人要有所执,方能有所成
展开
-
LeetCode: 23. Merge k Sorted Lists(合并K个排序链表)
原题链接算法我采用的是分治法,在原有的Merge Two Sorted Lists的基础上进行改进自底向上先进行两个链表的合并,进而四个链表的合并…如下图所示链表1链表11链表2链表3链表12链表4链表111链表5链表5链表5链表1111AC代码(c++)/** * Definition for singly-linked list. * struct ListNode { ...原创 2020-02-12 19:37:06 · 124 阅读 · 0 评论 -
LeetCode:27. Remove Element(移除元素)
算法题目要求原地修改,可以采用双指针法定义指针i遍历数组所有元素,定义指针j用来保留剩余元素线性时间AC代码(c++)class Solution {public: int removeElement(vector<int>& nums, int val) { int len=nums.size(); int result...原创 2020-02-12 14:53:47 · 123 阅读 · 0 评论 -
LeetCode:35. Search Insert Position
原题链接算法从左到右遍历有序序列,找到和目标值相等或比目标值大的元素下标代码(c++)class Solution {public: int searchInsert(vector<int>& nums, int target) { int len=nums.size(); for(int i=0;i<len;i++) ...原创 2020-02-09 21:50:47 · 97 阅读 · 0 评论 -
LeetCode:31. Next Permutation
原题链接算法找到字典序相邻更大的序列,从序列最右端向最左端数起,直到找到一个相对更小的数,如图所示,4就是我们要找的数在4的右侧找到比4大的最小的数,如图所示,5两个数交替,为了保证字典序相邻,交换之后,对5之后的序列进行从小到大的排序ACcode(c++):class Solution {public: void nextPermutation(vector<in...原创 2020-02-09 21:33:28 · 161 阅读 · 0 评论 -
LeetCode:29. Divide Two Integers
原题链接开始直接累加,超出时间限制,看了别人的题解改用二分法class Solution {public: int divide(int dividend, int divisor) { //排除一些特殊情况 if(divisor==0) return 0; if(divisor==1) ...原创 2020-02-08 11:40:27 · 152 阅读 · 0 评论 -
LeetCode:26. Remove Duplicates from Sorted Array
原题链接官方的双指针法,很巧妙class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; sort(nums.begin(),nums.end());//快速排序 ...原创 2020-02-08 10:49:31 · 116 阅读 · 0 评论 -
LeetCode:24.Swap Nodes in Pairs
原题链接递归法:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: Li...原创 2020-02-07 14:57:56 · 104 阅读 · 0 评论 -
LeetCode:Generate Parentheses
原题链接回朔法:class Solution {public: vector<string> res; void backtrack(string ss,int s,int e,int maxn) { if(ss.size()==maxn) { res.push_back(ss); ...原创 2020-02-06 12:14:11 · 112 阅读 · 0 评论 -
LeetCode:Merge Two Sorted Lists
原题链接合并两个链表,相对比较简单/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publi...原创 2020-02-06 11:00:11 · 114 阅读 · 0 评论 -
LeetCode:Valid Parentheses(栈,哈希表)
字符配对问题,栈结构的典型应用直接判断方法:class Solution {public: bool isValid(string s) { if(s.empty())//假定空字符串是有效的 return true; stack<int> va; int len=s.size(); ...原创 2020-02-06 10:33:53 · 164 阅读 · 0 评论 -
LeetCode:4Sum
原题链接双指针法AC(c++)class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>> res;//定义返回结果 int len=n...原创 2020-02-05 11:49:42 · 88 阅读 · 0 评论 -
LeetCode:Letter Combinations of a Phone Number
哈希表+深度搜索这道题的特点是我们不知道一共有多少个数字,所以我们可以用while循环或者递归的方式解决,思路是一样的。创建哈希表是肯定的,降低时间复杂度。AC代码(c++):class Solution {public: unordered_map<char,string> m={{'2',"abc"},{'3',"def"},{'4',"ghi"}, ...原创 2020-02-04 16:03:01 · 122 阅读 · 0 评论 -
LeetCode:3Sum
先是采用了哈希表的做法,但是没有解决去重复的问题哈希表做法代码(没有解决去重复的问题,未AC)class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { unordered_map<int,int> m; ve...原创 2020-02-03 14:52:30 · 113 阅读 · 0 评论 -
LeetCode:Longest Common Prefix(最长公共前缀)
原题链接class Solution {public: string longestCommonPrefix(vector<string>& strs) { int len=strs.size(); string prefix=""; int j=0; int flag=0; int m...原创 2020-02-02 11:56:04 · 116 阅读 · 0 评论 -
Roman to Integer
class Solution {public: int romanToInt(string s) { //哈希表,查询一次时间复杂度是O(1) unordered_map<string,int> m={{"I",1},{"V",5},{"X",10},{"L",50},{"C",100}, ...原创 2020-02-02 11:23:00 · 99 阅读 · 0 评论 -
LeetCode:Integer to Roman
暴力写法,非常没有水平,看看就好,日后有机会会优化class Solution {public: string intToRoman(int num) { string Roman; while(num>0) { if(num>=1000) { R...原创 2020-01-31 13:07:07 · 131 阅读 · 0 评论 -
LeetCode:Container With Most Water
贪心法,参考官方题解第二种方法class Solution {public: int maxArea(vector<int>& height) { int l=0,r=height.size()-1; int maxarea=0; while(l<r) { maxarea=...原创 2020-01-31 12:15:25 · 101 阅读 · 0 评论 -
LeetCode:Palindrome Number
水题,即使数字转化为字符串和字符串翻转这两个函数自己写也并不难class Solution {public: bool isPalindrome(int x) { string s1,s2; stringstream ss;//定义流ss ss<<x;//将数字转化为流 ss>>s1;//将流转化为...原创 2020-01-30 10:41:20 · 127 阅读 · 0 评论 -
LeetCode:String to Integer (atoi)
也属于模拟过程类型的题目class Solution {public: int myAtoi(string str) { if(str.empty()) return 0; int len = str.length(); map<char,int> convert; convert['1...原创 2020-01-29 21:01:02 · 92 阅读 · 0 评论 -
LeetCode:Reverse Integer
题目链接这是目前为止刷过LeetCode里最简单的题目了,主要注意环境的存储的数字范围是[−2^31, 2^31 −1],即在计算过程中数字的范围必须在[-2147483648,2147483647]内。AC代码:class Solution {public: int reverse(int x) { int tmp=x; int y=0;//存...原创 2020-01-29 17:35:19 · 177 阅读 · 0 评论 -
LeetCode:ZigZag Conversion
属于模拟过程类型的题目,和之前做的CCF认证题目碰撞的小球比较像,同样设定了一个变量来模拟方向。d=1表示向下,d=-1表示向上。class Solution {public: string convert(string s, int numRows) { if(numRows==1)//如果给定行数为1则直接返回 return s; ...原创 2020-01-28 18:45:38 · 105 阅读 · 0 评论 -
LeetCode:Longest Palindromic Substring
暴力解法,果不其然超时暴力解法程序(c++)bool isShorter(const string &s1, const string &s2)//自定义按照字符串大小降序排序{ return s1.size() > s2.size();}class Solution {public: string longestPalindrome(string s)...原创 2020-01-28 17:29:04 · 144 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
思考:通过自建哈希集合的方法来实现滑动窗口未优化:class MyHashSet {public: /** Initialize your data structure here. */ vector<bool> hash; MyHashSet() { hash = vector<bool>(1000001, false); ...原创 2020-01-27 13:27:47 · 158 阅读 · 0 评论 -
输油管道问题(线性时间解决)
输油管道问题某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有 n口油井的油田。从每口油井都要有一条输油管道沿南北向最短路经与主管道相连。如果给定 n 口油井的地理位置,即它们的 x 坐标(东西向)和 y坐标(南北向),应如何确定主管道的最优位置,使得各油井到主管道之间的输油管道的长度总和最小?设计一个线性时间算法计算各油井到主管道之间的输油管道最小长度总和。思考:主输油管道...原创 2020-01-12 15:39:56 · 4413 阅读 · 0 评论 -
Cow Acrobats
Farmer John’s N (1 <= N <= 50,000) cows (numbered 1…N) are planning to run away and join the circus. Their hoofed feet prevent them from tightrope walking and swinging from the trapeze (and thei...转载 2019-01-22 22:29:19 · 278 阅读 · 0 评论 -
Crazy tea party
n participants of << crazy tea party >> sit around the table. Each minute one pair of neighbors can change their places. Find the minimum time (in minutes) required for all participants to...原创 2019-01-22 19:08:51 · 233 阅读 · 0 评论 -
吃糖果问题
D - 吃糖果 HDU - 1205HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。Input第一行有一个整数T,接下来T组数据,每组数据占2行,第一行是一个整数N(0&lt;N&...原创 2019-01-16 21:43:38 · 902 阅读 · 0 评论 -
归并排序求逆序对
One measure of unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequenceDAABEC’’, this measure is 5, since D...原创 2019-01-27 20:50:46 · 163 阅读 · 0 评论 -
前m大的数
还记得Gardon给小希布置的那个作业么?(上次比赛的1005)其实小希已经找回了原来的那张数表,现在她想确认一下她的答案是否正确,但是整个的答案是很庞大的表,小希只想让你把答案中最大的M个数告诉她就可以了。给定一个包含N(N&lt;=3000)个正整数的序列,每个数不超过5000,对它们两两相加得到的N*(N-1)/2个和,求出其中前M大的数(M&lt;=1000)并按从大到小的顺序排列。I...原创 2019-01-20 21:07:19 · 274 阅读 · 0 评论 -
排序(字符串数组,字符串分割)
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。Input输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。输入数据保证:...原创 2019-01-20 20:00:05 · 538 阅读 · 0 评论 -
FatMouse' Trade
FatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.The warehouse has N rooms. The i-th room contains J[i] pounds of Jav...原创 2019-01-24 22:22:13 · 247 阅读 · 0 评论 -
ccf认证201803-1:跳一跳
试题编号: 201803-1试题名称: 跳一跳时间限制: 1.0s内存限制: 256.0MB问题描述近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否...原创 2019-02-23 21:24:12 · 178 阅读 · 0 评论 -
ccf认证201803-2:碰撞的小球
201803-2试题名称: 碰撞的小球时间限制: 1.0s内存限制: 256.0MB问题描述:问题描述数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。 当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。 当两...原创 2019-02-23 22:07:44 · 389 阅读 · 0 评论 -
hello的一生
计算机系统基础大作业题 目 程序人生-Hello’s P2P 专 业 机械设计制造及其自动化学 号 1160801119班 级 1608105学 生 韩立柱 指 导 教 师 史先俊计算机科学与技术学院2019年3月在本篇文章之中,我们将跟随着程序hello的脚步,畅游计算机系统的世界...原创 2019-05-12 23:21:37 · 176 阅读 · 0 评论 -
剩下的树
题目描述:有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。可能有M(1<=M<=100)个区间,区间之间可能有重叠。现...原创 2019-08-30 20:14:12 · 192 阅读 · 0 评论 -
A+B(字符串数组和数字之间的转化)
题目描述:给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。现在请计算A+B的结果,并以正常形式输出。输入:输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。输出请计算A+B的结果,并以正常形式输出,每组数据占一行。样例输入-234,567,890 123,456,7891,234 ...原创 2019-08-30 22:05:02 · 909 阅读 · 0 评论 -
特殊的乘法(利用字符串保存数字)
题目描述:写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35输入:两个小于1000000000的数输出:输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。样例输入:24 6542 666663 67样例输出:6618039#inclu...原创 2019-08-31 11:38:56 · 317 阅读 · 0 评论 -
比较奇偶数个数
题目描述第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。输入输入有多组数据。每组输入n,然后输入n个整数(1<=n<=1000)。输出如果偶数比奇数多,输出NO,否则输出YES。样例输入16770 69 24 78 58 62 64样例输出YESNO反思:存储数据时如果不需后续调用不必用数组,节省空间...原创 2019-08-31 21:44:15 · 149 阅读 · 0 评论 -
Shortest Distance (20)
题目描述The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits.输入Each input file contains one test c...原创 2019-08-31 22:49:01 · 136 阅读 · 0 评论 -
数字分类 (20)
题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;A3 = 被5除后余2的数字的个数;A4 = 被5除后余3的数字的平均数,精确到小数点后1位;A5 = 被5除后余4的数字中最大数字。输入每个输入包含1个测试用例。每个测试用例先给出一...原创 2019-09-01 11:24:06 · 967 阅读 · 0 评论