1. Num.196 寻找缺失的数

给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。

注意事项

可以改变序列中数的位置。

您在真实的面试中是否遇到过这个题?

Yes
样例

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

您在真实的面试中是否遇到过这个题?

Yes
样例

给出 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解题报告的更多相关文章

  1. LeetCode: Sort Colors 解题报告

    Sort ColorsGiven an array with n objects colored red, white or blue, sort them so that objects of th ...

  2. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  3. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  4. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  5. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  6. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  7. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  8. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

  9. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

随机推荐

  1. NET实现仓库看板的一些感想

    NET实现仓库看板的一些感想 从一名技术开发人员到实施人员的蜕变,从不同的角度看待同一个问题,或许会有不一样的结果.这里记录一下最近一个项目实施的案例,非常有感触! 一. 项目情况简介 本次项目是给一 ...

  2. iOS基础 - 控件属性

    一.控件的属性 1.CGRect frame 1> 表示控件的位置和尺寸(以父控件的左上角为坐标原点(0, 0)) 2> 修改这个属性,可以调整控件的位置和尺寸 2.CGPoint cen ...

  3. C语言中指针变量如何向函数中传递

    指针变量存储的是地址,所以在函数调用的时候我们能否将指针变量传递给函数?如果不知道结果,那我们可以直接问电脑,输入如下一段代码. void GetMemory(char *p) { p = (char ...

  4. Socket一些常用的方法封装

    public class SocketHelper { /// <summary> /// 功能描述:得到一个实例对象 /// </summary> /// <retur ...

  5. [转]从命令行往 iOS 设备上安装程序

    link:http://www.stewgleadow.com/blog/2011/11/05/installing-ios-apps-on-the-device-from-the-command-l ...

  6. C语言中数据类型的长度

    面试中C里面int长度经常会被问到,下面总结一下作为资料: 首先看看一般规定: 标准c规定,int长度等于机器字长,short的表示范围不能大于int的表示范围,long的表示范围不能小于int的表示 ...

  7. resin-pro-4.0.34 服務器在windows环境下的配置

    resin-pro-4.0.34 服務器在windows环境下的配置(轉載请注明作者:icelong) 到caucho網站上http://www.caucho.com/download/下載resin ...

  8. zabbix实现对磁盘动态监控

    zabbix实现对磁盘动态监控 前言 zabbix一直是小规模互联网公司服务器性能监控首选,首先是免费,其次,有专门的公司和社区开发维护,使其稳定性和功能都在不断地增强和完善.zabbix拥有详细的U ...

  9. JForum2.1.9 安装过程

    JForum2.1.9 安装过程 JForum2.1.9 安装过程 2013/08/10 0:48 1.第一次接触 2013/08/08 在开源中国看到一个国外开源的Java论坛,然后下载JForum ...

  10. Mac下quick-cocos2d-x player 无法运行解决方案

    今天打算在Mac开发我的游戏,因为游戏用的2.2.5版的player,没有安装版.在Mac上运行player时提示player文件已经损坏. 解决方法:在shell下执行如下指令即可 mv $QUIC ...