Lintcode解题报告
1. Num.196 寻找缺失的数
给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。
注意事项
可以改变序列中数的位置。
N = 4
且序列为 [0, 1, 3]
时,缺失的数为2
。
1.可以1~n-1求和再减去数组中数字的总和,差值即为缺失的数,但是容易造成溢出.
2.利用异或的性质
K^k = 0;
0^k = k;
将所有数两两异或则丢失的那个数就会是异或的结果
- public class Solution {
- /**
- * @param nums: an array of integers
- * @return: an integer
- */
- public int findMissing(int[] nums) {
- // write your code here
- if (nums == null || nums.length == 0) {
- return 0;
- }
- int ans = 0;
- for (int i = 0; i < nums.length; i++) {
- ans = ans ^ nums[i] ^ i;
- }
- ans = ans ^ (nums.length);
- return ans;
- }
- }
2.Num.570寻找丢失的数II
给一个由 1 - n
的整数随机组成的一个字符串序列,其中丢失了一个整数,请找到它。
注意事项
n <= 30
给出 n = 20
, str = 19201234567891011121314151618
丢失的数是 17
,返回这个数。
思路:难点在于给的是字符串而不是数组,对于字符串中的连续两个字符,需要判断是一个数字还是两个数字
看到标签深度优先搜索才想到用深度优先搜索。
注意特殊情况 num==0和找到之后不能再继续找下去,所以
ans!=0的时候就直接break
- public class Solution {
- /**
- * @param n an integer
- * @param str a string with number from 1-n
- * in random order and miss one number
- * @return an integer
- */
- int ans;
- public int findMissing2(int n, String str) {
- // Write your code here
- if (str == null || str.length() == 0) {
- return n;
- }
- boolean[] flag = new boolean[n + 1];
- findHelper(flag, n, 0, 0, str);
- return ans;
- }
- public void findHelper(boolean[] flag, int n,int sum, int index, String str) {
- if (index == str.length()) {
- ans = (n + 1) * n / 2 - sum;
- return;
- }
- //连续的两位字符,判断哪个满足条件
- for (int i = 1; i <= 2; i++) {
- int num = Integer.parseInt(str.substring(index, index + i));
- if (num == 0) {
- break;
- }
- if (num <= n && !flag[num]) {
- flag[num] = true;
- findHelper(flag, n, sum + num, index + 1 + i - 1, str);
- flag[num] = false;
- }
- //在最后一个字符位置就不需要遍历两字符的情况了 + 找到之后就不需要继续找
- if (index == str.length() - 1 || ans != 0) {
- break;
- }
- }
- }
- }
Lintcode解题报告的更多相关文章
- LeetCode: Sort Colors 解题报告
Sort ColorsGiven an array with n objects colored red, white or blue, sort them so that objects of th ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
- 习题:codevs 2822 爱在心中 解题报告
这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
- 习题: codevs 2492 上帝造题的七分钟2 解题报告
这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...
- 习题:codevs 1519 过路费 解题报告
今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...
- NOIP2016提高组解题报告
NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合
随机推荐
- ASP.NET MVC应用程序更新相关数据
为ASP.NET MVC应用程序更新相关数据 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...
- IDE编程环境
Vim配置及说明——IDE编程环境 目录 Vim配置及说明——IDE编程环境 1.基本及字体 2.插件管理 3.主题风格 4.窗口设置 5.目录树导航 6.标签导航 7.taglist 8.多文档编辑 ...
- Effective C++(12) 复制对象时要复制每一个成员
问题聚焦: 负责拷贝的两个操作:拷贝构造函数和重载赋值操作符. 一句话总结,确保被拷贝对象的所有成员变量都做一份拷贝. Demo void logCall(const std::string&am ...
- AjaxPro2
AjaxPro2完整入门教程 一.目录 简单类型数据传送(介绍缓存,访问Session等) 表类型数据传送 数组类型数据传送(包含自定义类型数据) 二.环境搭建 1.这里本人用的是VS2012. ...
- iOS证书深究
iOS证书深究 iOS的系列证书很令人头痛,但是也提供了完整的保护. 在开发过程中,遇到的基本的证书有Xcode真机调试或者打包用证书,也有消息推送证书等:每种证书分为开发版(development) ...
- 次短路[SPFA]
Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...
- Twitter算法
算法实践——Twitter算法面试题(积水问题)的线性时间解法 问题描述:在下图里我们有不同高度的挡板.这个图片由一个整数数组所代表,数组中每个数是墙的高度.下图可以表示为数组(2.5.1.2.3 ...
- 一步步学习Python-django开发-Mac下搭建Python-Django环境
首先确定学习那一个版本,以之前对Python的接触,Python2.x 的版本仍然占据很大的市场.但作为初学者我还是决定学习新的版本,相信未来会逐渐转向3.x版本的. 其实搭建Python不是一件很难 ...
- mysql数据类型简介
MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种. 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型.下面做个对比: MyISAM表 ...
- A*算法&博弈树α-β剪枝
A*算法&博弈树α-β剪枝 A*算法/博弈树 前阵子考试学了A*算法.博弈树和回溯,自己真是愚蠢至极,根本没就搞明白这些,所以对于这些算法问道的话就不能说清楚,也记不住,所以才有了这篇笔记.在 ...