上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 31 下一页
摘要: 题目描述:在一个M * N的矩阵中,所有的元素只有0和1,从这个矩阵中找出一个面积最大的全1子矩阵,所谓最大是指元素1的个数最多Leetcode 原题, 没有案例就是跪, WA 到没脾气代码 未通过九度测试#include #include #include #include #include using namespace std;int m, n;int matrix[1001][1001];int rectangle[1001];int largestHis() { int global = 0; deque stack; for(int i = 0; i < n; i... 阅读全文
posted @ 2014-03-06 21:37 SangS 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 题目描述:在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较高的就要排在队尾。突然,有一天出操负责人想了一个主意,想要变换一下队形,就是当大家都从楼上跑下来后,所有的学生都随机地占在一排,然后出操负责人从队伍中抽取出一部分学生,使得队伍中剩余的学生的身高从前往后看,是一个先升高后下降的“山峰”形状。据说这样的形状能够给大家带来好运,祝愿大家在学习的道路上勇攀高峰。(注,山峰只有一边也符合条件,如1,1、2,2、1均符合条件)思路1. 这道题我还蛮想总结一下, 因为与之类似的一道题 Candy 当时就把我做 阅读全文
posted @ 2014-03-06 21:18 SangS 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路1. 最初的想法是比较两个数时, 较短的数末尾补最后一个数, 比如 233, 23 -> 233, 233. 然后判断会变得比较复杂2. 正好昨晚和室友闲聊, 谈到说到这道题, 才知道末尾补第一个数才是正解. 233, 23 -> 233, 2323. 剑指 offer 上的解法更是简单粗暴, 直接将两个数拼出来看看就得了. 233, 23 -> 23233, 233234. 看完剑指 o 阅读全文
posted @ 2014-03-06 21:02 SangS 阅读(1449) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入一个二叉树,输出其镜像。思路1. 二叉树镜像的判定, 镜像树的建立是类似的题目.2. 代码的框架是 func(root1, root2). 函数体内部是 func(root1->left, root->right), func(root->left, root->right)3. 建立的方法都是 bottomUp, 这个过程可以通过 func 的返回实现, 也可以通过参数实现.代码 未通过九度测试, 以后再改吧#include #include #include #include #include using namespace std;char arr[ 阅读全文
posted @ 2014-03-06 20:56 SangS 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。总结剑指 offer 原题, 要注意负数移位是永远到不了 0 的代码#include #include using namespace std;int count1(int x) { int cnt = 0; while(x != 0) { x = x&(x-1); cnt ++; } return cnt;}int main() { //freopen("testcase.txt", "r", stdin); int n; while(scanf("... 阅读全文
posted @ 2014-03-06 20:52 SangS 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 题目描述:回文串就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。给出一个只由小写英文字符a,b,c...x,y,z组成的字符串,请输出其中最长的回文子串的长度。思路1. 使用枚举法判断, 时间复杂度会到 o(n^3)2. 动规的记忆化搜索, 时间复杂度会降到 o(n^2)3. leetcode 给出了一个算法, 将时间复杂度降低到 o(n)代码#include #include #include using namespace std;char ori[200010];char ist[500020];int 阅读全文
posted @ 2014-03-04 20:30 SangS 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 总结1. getline(cin, string)2. getline 不能和 scanf 联合使用. 联合使用的话, 一个数会被读入多次题目描述:小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩其中的连续空格为1个。思路1. 题目本身并没有什么难度, 主要是看懂题. 题目要求的是压缩空格, 不是删除空格. WA 了很多次代码#include #include #include #include #include using namespace std;c 阅读全文
posted @ 2014-03-04 20:19 SangS 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 题目描述:假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果为2个朋友圈。思路1. 裸的并查集, 回顾下并查集的知识2. 并查集主要有两个操作, 一个是 merge, 一个是 find. find 用于找到一个集合的标志, merge 用于合并两个集合. 在实 阅读全文
posted @ 2014-03-04 20:16 SangS 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 题目描述:给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的。数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr[n-1],arr[0],…,arr[j],现在请你这个ACM_Lover用一个最高效的方法帮忙找出所有连续子数组和的最大值(如果数组中的元素全部为负数,则最大和为0,即一个也没有选)思路1. 本以为这题与 Leetcode 上 Gas Station 一样, 提交之后也能通过 2 个 case, 但最终通过一组数据 (2 1 -3 2) 决定了 Gas Station 的做法不正确2. 分两种情况 阅读全文
posted @ 2014-03-04 20:09 SangS 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 题目描述:现在有一个8*8的棋盘,上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于100),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下角。从棋盘的左上角移动到右下角的时候的,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,但是拿到的所有的礼物的价值之和不大于一个限定值limit,请设计一个算法请实现,使其能够获得不超过限制值limit的最大价值的礼物。思路1. 在棋盘问题的基础上加了一个限制, 礼物数不能超过 limit2. 这个限制使得状态转移方程需要进行一下变形3. dp[i][j][k] 阅读全文
posted @ 2014-03-04 13:30 SangS 阅读(586) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 31 下一页