摘要: 和上题差不多http://www.cnblogs.com/0summer/p/5837634.html 输入一个字符串,代表一个表达式,包含的运算符有+,-,*,/ 本题没有包括括号,我的做法是把数字和+或者-压栈,继续遍历,如果遇到*或者/取出栈顶的数字和*或者/之后的数字进行计算然后再压栈,最后 阅读全文
posted @ 2016-09-03 18:19 0_summer 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 输入一个字符串,包含数字或者+,-,(,),求这个表达式的结果 1.没有括号时顺序执行 2.有括号时先计算括号内的表达式 这里用一个栈来保存遇到括号(之前的表达式的结果,也就是说没遇到括号之前,按顺序正常执行设结果为x,遇到括号之后要先计算括号内的表达式,设结果为y,然后再把y拿出来和x顺序执行。因 阅读全文
posted @ 2016-09-03 17:41 0_summer 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 输入01矩阵,求子矩阵为正方形,其中全为1的最大子矩阵的面积 矩阵dp,dp[i][j]表示以(i,j)为右下角的最大正方形子矩阵的长度 如果a[i][j]==1,dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1 要先处理第一行和第一列 时间N*M 阅读全文
posted @ 2016-09-02 14:39 0_summer 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 直接看我的csdn吧http://blog.csdn.net/AC_0_summer/article/details/52413542 阅读全文
posted @ 2016-09-02 14:19 0_summer 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,求是否有abs(i-j)<=k,使得a[i]==a[j] 所以在判断两个元素是否相等时还要判断他们之间的距离,可以两重循环来做。 这里我用set<node>自定义数据类型和比较函数,按元素值来排序,如果元素值相同按下标来排序,之后遍历一遍set<node>即可。时间应该是set排序时间 阅读全文
posted @ 2016-09-02 13:20 0_summer 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 输入n个从0,1,2~n中选择的n个数,每个数只选择一次,找出没有被选择的数 要求时间ON,空间O1 先求sum=n*(n+1)/2; 然后遍历数组,依次减去a[i],最后剩下的sum就是结果 阅读全文
posted @ 2016-09-02 12:04 0_summer 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 也是找a[i]>=x+1,x代表已经合法的a[i]的个数。不过本题输入的数组已经是升序了。 直接从后往前遍历就行 阅读全文
posted @ 2016-09-02 11:58 0_summer 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 输入一个数组,a[i]代表第i个篇论文有a[i]个引用,求n篇论文中引用数大于等于论文数的论文个数,即设当前有x篇论文满足要求,a[i]满足要求的条件是:a[i]>=x+1 递减排序,遍历一遍,当a[i]>=i+1时ans++,否则break,因为a[i]都不满足a[i]>=i+1,再往后遍历,a[ 阅读全文
posted @ 2016-09-02 11:54 0_summer 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 输入整数n,求完全平方数的和等于n中完全平方数用得最少的个数 直观想法搜索,先处理n以内的完全平方数,然后搜索,但效率不行,整数范围内的完全平方数有40000多个,用搜索的方法相当于求集合的子集个数,时间是2^n,肯定超时 正解:dp dp[i]表示完全平方数和等于i的最优解 dp[i]=min(d 阅读全文
posted @ 2016-09-01 23:39 0_summer 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 给定一个派生类,这个派生类只继承了基类的next()和hasNext()方法,现在要求重写派生类的next(),hasNext()和peek()方法 peek()始终取next指针的后一个元素 分析: peek()取的是next指针的后一个元素,并且只有next()和hasNext()两个方法可用, 阅读全文
posted @ 2016-09-01 23:15 0_summer 阅读(425) 评论(0) 推荐(0) 编辑