leepcode作业解析 - 5-20
22、缺失数字
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1]
输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
class Solution(object):
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if nums == [0]:
            return 1
        else:
            nums.sort()
            for i in range(len(nums)):
                if nums[i] != i:  ##因为数组是0-n,所以如果数字中的索引值不等于数字中的元素值,那这个索引值就是缺失的元素值。
                    return i
            return nums[-1]+1  ## 如果for循环内返回的是空值,则最后一个值+1(如果数组缺失的是最后一个值,那么for循环取出来的值就会是空值)
23、第一个错误的版本
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。
你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。
示例:
给定 n = 5,并且 version = 4 是第一个错误的版本。
调用 isBadVersion(3) -> false
调用 isBadVersion(5) -> true
调用 isBadVersion(4) -> true
所以,4 是第一个错误的版本。
解答:使用了二分法解题,二分法排除
# The isBadVersion API is already defined for you.
# @param version, an integer
# @return a bool
# def isBadVersion(version):
class Solution(object):
    def firstBadVersion(self, n):
        """
        :type n: int
        :rtype: int
        """
        left = 1
        right = n  # type:int
        while left <=right:
            mid = (left + right) //2
            if isBadVersion(mid):
                right = mid -1
            else:
                left = mid +1
        return (left)
24、移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
解答:
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        # j = 0
        # if len(nums) == 1:
        #     return nums
        # else:
        #     for i in range(len(nums)):
        #         if 1nums[i] != 0:
        #             nums[j] = nums[i]
        #             nums[i] = 0
        #             j +=1
        # #     return nums
        # j = 0
        # if len(nums) == 1:
        #     return(nums)
        # elif len(nums) ==2:
        #     if nums[0] == 0:
        #         nums[0],nums[1] =nums[1],nums[0]
        #         return(nums)
        #     else:
        #         return nums
        # if len(nums)>2:
        #     for i in range(len(nums)):
        #         if nums[i] != 0:
        #             nums[j] = nums[i]
        #             nums[i] = 0
        #             j +=1
        #     return(nums)
        nums.sort(key=bool, reverse=True)
leepcode作业解析 - 5-20的更多相关文章
- leepcode作业解析 - 5-19
		18.两数之和II -输入有序数组 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 ... 
- leepcode作业解析-5-21
		25.Nim游戏 你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头. 拿掉最后一块石头的人就是获胜者.你作为先手. 你们是聪明人,每一步都是最优解. 编 ... 
- leepcode作业解析-5-15日
		1.删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外 ... 
- 10月20日MySQL数据库作业解析
		设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表 ... 
- 【OCP-12c】CUUG 071题库考试原题及答案解析(20)
		20.choose two Examine the description of the EMP_DETAILS table given below: Which two statements are ... 
- 9月14日JavaScript循环语句作业解析
		1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 解法一: var gd = 8848; var cs = 0; while(true) { cs++; gd = gd ... 
- java课后作业2017.10.20
		动手动脑1: public class Test{ public static void main(String args[]) { Foo obj1=new Foo(); }}class Foo{ ... 
- Flink Connector 深度解析
		作者介绍:董亭亭,快手大数据架构实时计算引擎团队负责人.目前负责 Flink 引擎在快手内的研发.应用以及周边子系统建设.2013 年毕业于大连理工大学,曾就职于奇虎 360.58 集团.主要研究领域 ... 
- NLP教程(4) - 句法分析与依存解析
		作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ... 
随机推荐
- PostgreSQL-6-数据分组
			基本语法 SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2 HAVING [ cond ... 
- 用python将多个文档合成一个
			可以参考下以下网址(读写文件):https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/ ... 
- Java EE学习笔记(七)
			MyBatis的核心配置 1.MyBatis的核心对象 1).SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建Sql ... 
- hdu4578Transformation(线段树多个lz标记)
			这里以3次方来举例讲一下这题的做法,其它维类似. 如果要求某一个值的3次方那么sum = t^3,设t = x+y.那也就是sum = (x+y)^3. 假如我让每个数都加z t = x+y+z,我可 ... 
- .Net 遍历目录下第一层的子文件夹和子文件夹里的文件
			今天再完成一道任务的时候需要遍历得到所有txt文件,搜索很久终于得到了一个很方便的方法. foreach (string o in Directory.GetDirectories(@"D: ... 
- 随机不重复的取数组元素,并赋值给div使用
			function pos(){ var items = $('.starone'); items.each(function () { var rand = getRandom(); $(this). ... 
- Java编程基础-字符串
			在Java语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:另一类是在程序中会被改变长度的可变字符串.Java环境为了存储和维护这两 ... 
- 洛谷 P1474 货币系统 Money Systems
			P1474 货币系统 Money Systems !! 不是noip2018的那道题. 简单的多重背包的变式. #include <iostream> #include <cstdi ... 
- SQL根据出生日期精确计算年龄、获取日期中的年份、月份
			第一种: 一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄 datediff(year,birthday,getdate()) 例:birthday = '2003-3- ... 
- SQL server  数据库基础语句 子查询  基础函数
			上一章 说了下 子查询的意义是 把一条查询语句当做值来使用 select *from car //查询汽车的信息 假设我知道一个汽车的编号是 c021 但是我要查询 比这个汽车价格高的汽车信息 ... 
