- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 Linux初始引导
Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程。init进程根据/etc/inittab来在不同的运行级别启动相应的进程或执行相应的操作。inittab文件中定义的登记项都是以:隔开的四个段,即: id:runlevels...
2018-10-21 19:53:16
1442
原创 #每日一题2018/4/12
贪心日:问题1:删数问题有一个长度为n(n 输入:178543 4 样例输出:13思路:遍历数字,找到第一个递减区间的左端,删除;若数字递增,删除最后的。#include using namespace std;int main(){ char number[300]; int s; int flag=1; while(cin>>number>>s
2018-04-13 12:57:56
456
原创 #每日一题2018/4/4
前面几天都太忙了啊啊啊各种事情隔了好几天才开始做题非常羞耻了,要勤奋啊少女leetcode 33很有意思的一道题,变形二分法不贴代码了,照着大神打的,非常简洁高效
2018-04-10 13:28:10
161
原创 #每日一题2018/3/30
Leetcode 30看到一个无比无比聪明的做法,太佩服了。思路:将words数组中每一个字符串编码为一个特定数字,使整个words数组加起来的和唯一。使用unordered_map存储,那么为了和是唯一的,就使用左移,使每一个都为2的指数(1,2,4,8)遍历被检测的字符串,将每一个能对应上words数组中某个字符串的位置,初始化为该字符串对应的数字再次遍历被检测字符串,使用
2018-04-04 08:42:13
257
原创 #每日一题2018/3/29
leetcode 26简单,看看就好啦class Solution {public: int removeDuplicates(vector& nums) { int length=nums.size(); if(length==0) { return 0; } int start=0; for(int
2018-03-30 08:08:48
192
原创 #每日一题2018/3/28
leetcode 23合并k个有序链表,维护一个最小堆,堆由每一个链表的第一个元素组成,每次取堆顶元素,之后用该链表结点的next结点来替换。用优先队列实现最小堆/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNo
2018-03-29 10:20:24
179
原创 #每日一题2018/3/27
LeetCode 20第一反应是写好几个switch,不过呢因为涉及字符很简单,显然它是可以被放到一个if语句里面的。那么在维护栈的时候,就需要加一个“垫底”的元素,防止返回栈顶元素的时候发生错误。class Solution {public: bool isValid(string s) { stack st; int length=s.s
2018-03-28 13:06:08
194
原创 #每日一题2018/3/26
昨天只刷了一道leetcode 15,故没有单开一篇15和16道理相同,只是所问不同,从16题中我再次体会到了自身做题时的浮躁和粗糙。袖手于前方能疾书于后。leetcode 16爱乱初始化的毛病class Solution {public: int threeSumClosest(vector& nums, int target) { int length
2018-03-27 08:18:03
194
原创 #每日一题2018/3/24
leetcode 9非常简单~坑点就是正负数情况需要分别考虑。会了思路不是根本目的,严谨啊同学!!class Solution {public: bool isPalindrome(int x) { int ans=0; int temp=0; int primary=abs(x); int fir=x;
2018-03-25 10:32:11
192
原创 #每日一题2018/3/23
LeetCode 52017年算法上机的终焉之战的某道题,sy老师课上提过最直观的解法,感谢助教亲切放水~第一反应:求串的逆置,然后求原串和逆置串的最长相同子串,时间O(nlgn)首先借此复习一下最长公共子序列和最长公共子串的解法:最长公共子序列转移方程:dp[i][j]=dp[i-1][j-1]+1 (if a[i]==b[j]dp[i][j]=max(d
2018-03-24 15:51:32
133
原创 #每日一题2018/3/22
Leetcode 03 最长不重复子串第一反应就是动态规划。看到了网上的方法一。直接把问题简化为找两个重复字符间的最长距离,太巧妙了!class Solution {public: int lengthOfLongestSubstring(string s) { int locs[256];//记录字符上一次出现的位置 memset(locs
2018-03-23 14:38:34
182
原创 #每日一题2018/3/21
LeetCode 2模拟十进制运算考察单链表基本操作。题无难点,个人基础需要提高。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *
2018-03-22 09:14:54
142
原创 #每日一题2018/3/20
Leetcode 01(*还有待测改进方法)好几个月没打代码后熟悉一下map的用法。此方法的改进点:因为和是由两个数组元素组成,若错过了第一个,也不会错过第二个。省去了单开一个循环初始化map的时间。class Solution {public: vector twoSum(vector& nums, int target) { map lookup;
2018-03-21 11:09:19
163
原创 POJ1163—三角形矩阵最大路径
在做此题时,首先运用了跟1745矩阵最大路径一样的作法,自顶而下,状态转移方程:a[i[[j]+=max(a[i-1][j],a[i-1][j-1]),但是WA了。必须改成自底而上的方式才能AC掉。在网上找类似的题,发现Leetcode:三角形阵列最小和 一题,可以使用自顶而下。为什么POJ是这样还没有搞明白,思考了很久不觉得两者有什么除了顺序上的区别。望高手告知!附上代码:#includ
2017-11-07 09:22:04
300
原创 POJ1745-DP初探
题意:给n个数和一个k,在n个数中进行加减运算,问是否能够满足存在一个结果模k等于0.题解:采用动态规划思想,设置二维数组dp[i][j],表示加上或减去第i个数后,所得值取模后能否为j。本质上个人认为还是for循环嵌套遍历。网上有题解提到使用滚动数组优化空间,当然for循环嵌套无法剪枝,所以只能优化空间复杂度,而对时间复杂度没有影响。坑点:注意数组边界条件(int i=0时,循环中有
2017-11-06 22:27:45
216
原创 【水】背包问题的POJ例题
1 0-1背包问题POJ 3624题解:非常基础的模板题,套用0-1背包公式即可。还是放上代码:#include #include using namespace std;int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int value[n+2],weight[n+2]; for(int i=0;i
2017-11-05 20:44:14
704
1
原创 筛法求素数与欧拉函数
问题:求小于等于n的素数个数一般方法:从1~n都使用for循环判断是否为素数,时间复杂度为O(n2),纵然优化后,在每一个for循环中取n=sqrt(n)判断,仍然会是O(3/2)的复杂度。为了将算法优化到线性级别,考虑使用辅助数组。思路如下:设置2~n的for循环,定义check数组,初始值为0。遍历过程中,若某数为i的整倍数(如4为2的两倍,6为2的3倍),则设置check标记值为1,
2017-10-26 12:26:04
429
原创 坐标转移
北航OJ452 四合归零每份测试数据时限:1000ms总时限:2000ms(共2份测试数据)Problem DescriptionMagry最近看到了一个问题——给定四个等长整数集合A,B,C,D" role="presentation" style="box-sizing: border-box; display: inline; font-weight: normal; line-height
2017-10-22 19:41:15
346
原创 最大连续子数组的暴力\分治\DP方法
最大连续子数组:给定一组有正有负的数组,从中找出和最大的连续子数组。一 暴力求解设置两个for循环,分别求从1\2\3……个元素为起始元素的最大子数组和。过程中不断使用if条件判断更新maxsum的值。时间复杂度O(n2)。代码如下:#include //万能头文件 using namespace std;int main(){ int n;//数组长度 while(c
2017-10-22 14:02:09
430
转载 背包问题及其空间优化
//会MLE #include #include using namespace std;#define max(x,y) (x)>(y)?(x):(y)#define maxn 1000#define maxm 100000unsigned int weight[maxn],value[maxm];unsigned int f[maxn][maxm];int main()
2017-10-18 23:16:57
398
原创 寻找无序数组中第k大的数——快排思想
找数组中第k大的数,避免o(n2)时间,考虑快排方法。#include #include using namespace std;int random_partion(int *p,int n){ int idx=rand()%n; //随机取划分元素 swap(p[idx],p[n-1]); //将划分元素置于数组尾端 int i=-1; //标记最大的 小于标记元素
2017-10-18 20:31:30
1381
原创 POJ2431 优先队列
ExpeditionTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 18609 Accepted: 5396DescriptionA group of cows grabbed a truck and ventured on an expedition d
2017-10-12 22:34:49
201
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人