练习题 (三)

题目:

Summary Ranges

Given a sorted integer array without duplicates, return the summary of its ranges.

For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].

答案:

class Solution:
    # @param {integer[]} nums
    # @return {string[]}
    def summaryRanges(self, nums):
        return_list = []
        self.left = 0
        self.right = 0
        self.length = len(nums)

        if self.length == 0:
            return return_list

        for i in range(1, self.length):
            if (nums [i] - nums[i-1] != 1):
                return_list.append(self._get_range(self.left, self.right, nums)),
                self.left = i
                self.right = i
            else:
                self.right += 1
        return_list.append(self._get_range(self.left, self.right, nums))

        return return_list

    def _get_range(self, left, right, nums):
        if (left == right):
            return "{}".format(nums[left])
        else:
            return "{}->{}".format(nums[left], nums[right])

心得:

这题并不难,但是我想了比较久,没有考虑到的是这一句。“

if (nums [i] - nums[i-1] != 1):

我一直在想怎么样用一个自然数序列和输入序列,进行怎么循环比较,然后,把left和right弄出输出了。但是用两个序列是不必要的,纵向看不行,用横向看,就可以想通了。

时间: 2024-10-29 04:04:37

练习题 (三)的相关文章

练习题三:句子反转

题目描述 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格. 比如: (1) "hello xiao mi"-> "mi xiao hello" 输入描述: 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符) 输出描述: 对于每个测试示例,要求输出句子中单词反转后形成的句子 Python解法 # -*- coding:utf-8 -*-import sys if __name_

Java基础阶段综合练习

package com.模拟练习题一; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; /** * 1.键盘输入10个数,放到数组中 a. 去除该数组中大于10的数 b. 将该数组中的数字写入到本地文件nu

Shell脚本编程---条件判断if

SHELL脚本编程---判断 1.条件判断 条件判断在bash分为整数判断,字符判断和文件判断. 1-1条件判断的表达式: ① [ expression ] (注意单词词头和词尾都需要空格) ② [[ expression ]](注意同上) ③ test expression 1-2 整数比较 ① -eq  测试两个数是否相等,相等为真,不等为假 ② -ne  测试两个数是否不等, 反之. ③ -gt (大于),-lt (小于),-ge(大于或等于),-le(小于或等于) 逻辑与:&&  

操作系统原理-图书主题

第1章 操作系统概述 1.1 操作系统的概念 1.2 操作系统的历史回顾 1.3 操作系统的类型 1.4 操作系统的特征 1.5 操作系统与用户接口 1.6 操作系统的结构 1.7 操作系统的硬件环境 综合练习题一 第2章 处理器管理 2.1 多道程序设计 2.2 进程的描述 2.3 进程控制 2.4 进程互斥 2.5 信号量机制 2.6 进程同步 2.7 进程通信 2.8 死锁问题 2.9 处理器调度 2.10 线程的概念 综合练习题二 第3章 存储器管理 3.1 存储管理的概念 3.2 分区

2015-04-24linux系统日常管理复习题讲解

练习题 三次握手   建立连接 你在吗? ---我在,你还在吗?--我在.我要发数据了 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器 第二次握手:服务器收到syn包,必须确认客户的SYN 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1) 四次挥手  关闭连接 我要走了--好的 ,好走--关门--再见 1客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送 2服务器B收到这个FIN,它发回一个ACK, 3服务器B关闭与客户端A的连

MySQL基础(查)

#新建一个表create database exercise; #查询表的信息SELECT * FROM student;SELECT * FROM score; #查询student表的第二条到第四条的记录SELECT * FROM student2 LIMIT 1,3; #从student表查询所有学生的学号(id).姓名(name)和院系(department)的信息SELECT Id,NAME,Department FROM student; #从student表中查询计算机系和英语系的

算法--三色排序练习题

三色排序练习题 第17节 三色排序练习题 有一个只由0,1,2三种元素构成的整数数组,请使用交换.原地排序而不是使用计数进行排序. 给定一个只含0,1,2的整数数组A及它的大小,请返回排序后的数组.保证数组大小小于等于500. 测试样例: [0,1,1,0,2,2],6 返回:[0,0,1,1,2,2] Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class ThreeColor { 4 public int[] sortTh

百担百马+百钱百鸡+水仙花数--------“穷举”的三个练习题

1 //百马百担类似于百鸡百钱的问题,穷举 2 3 for(int dm =0;dm<=33;dm++) //大马的数量,第一层循环 4 5 { 6 for(int zm =0;zm<=50;zm++) //中马的数量,第二层循环 7 8 { 9 for(int xm = 0; xm<=200;xm++) //小马的数量,第三层循环 10 11 { 12 if(dm+zm+xm==100&&dm*3+zm*2+xm/2.0==100) 13 { 14 System.out

Arduino从基础到实践第三章练习题

先写在这里,还没经过测试. 1. LED两端往中间移动,到中间后向两边返回. 1 // adr301.ino 2 3 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; 4 int ledDelay(65); 5 int direction = 1; 6 int currentLED = 0; 7 unsigned long changeTime; 8 9 void setup() { 10 for(int i=0; i<10; i++){ 1