lintcode入门篇三

一. 两数之和

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target

你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1

样例

Example1:
给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].
Example2:
给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2].

挑战

Either of the following solutions are acceptable:

  • O(n) Space, O(nlogn) Time
  • O(n) Space, O(n) Time

注意事项

你可以假设只有一组答案。

第一种解法:

class Solution:
    """
    @param numbers: An array of Integer
    @param target: target = numbers[index1] + numbers[index2]
    @return: [index1, index2] (index1 < index2)
    """
    def twoSum(self, numbers, target):
        # write your code here
        array = []
        for i in range(len(numbers)):
            for j in range(i + 1,len(numbers)):
                if numbers[i] + numbers[j] == target:
                    return [i,j]

第二种解法:

class Solution:
    """
    @param numbers: An array of Integer
    @param target: target = numbers[index1] + numbers[index2]
    @return: [index1, index2] (index1 < index2)
    """
    def twoSum(self, numbers, target):
        # write your code here
        for i in range(len(numbers)):
            s = target - numbers[i]
            if s in numbers and numbers.index(s) != i:
                if numbers.index(s) > i:
                    return [i,numbers.index(s)]
                else:
                    return [numbers.index(s),i]

二. 搜索插入位置

中文English

给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。

你可以假设在数组中无重复元素。

样例

[1,3,5,6],5 → 2

[1,3,5,6],2 → 1

[1,3,5,6], 7 → 4

[1,3,5,6],0 → 0

挑战

时间复杂度为O(log(n))

class Solution:
    """
    @param A: an integer sorted array
    @param target: an integer to be inserted
    @return: An integer
    """
    def searchInsert(self, A, target):
        # write your code here
        if target in A:
            return A.index(target)
        else:
            for i in range(len(A)):
                if A[i] > target:
                    return i
            return len(A)

注释:

1.如果target在A数组里面,返回index。

2.如果不在A数组里面,则返回插入数组的位置。if A[i] > target >> return i,否则的话,说明是比A数组全部的值都大,则插入到A数组最后一个位置,即len(A)。

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12181738.html

时间: 2024-10-09 06:07:38

lintcode入门篇三的相关文章

【SSRS】入门篇(三) -- 为报表定义数据集

原文:[SSRS]入门篇(三) -- 为报表定义数据集 通过前两篇文件 [SSRS]入门篇(一) -- 创建SSRS项目 和 [SSRS]入门篇(二) -- 建立数据源 后, 我们建立了一个SSRS项目,并取得数据源,那么接下来做的就是知道报表要显示什么数据了,这一步可以通过建立数据集来实现. 1.解决方案资源管理器 ->右键选择共享数据集 ->添加新数据集: 2.在共享数据集属性窗口输入数据集名称:AdventureWorksDataset:数据源选择之前建立的:AdventureWorks

8.17_Linux之bash shell脚本编程入门篇(三)之循环以及函数function的使用

bash shell脚本编程入门篇(三)之循环 什么是循环执行? 将某代码段重复运行多次 重复运行多少次: 循环次数事先已知 循环次数事先未知 有进入条件和退出条件 相关命令:for, while, until,selet, for命令的使用 作用: 依次将列表中的元素赋值给"变量名"; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束 命令格式: for 变量名 in 列表; do 循环体(正常执行的执行命令) 语句1 语句2 语句3 ... done 列表生成方式: (

lintcode入门篇一

1.反转一个只有3位数的整数. 样例 样例 1: 输入: number = 123 输出: 321 样例 2: 输入: number = 900 输出: 9 注意事项 你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000. class Solution: """ @param number: A 3-digit number. @return: Reversed number. """ def reverseIntege

lintcode入门篇二

一. 最大子数组 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 样例 样例1: 输入:[−2,2,−3,4,−1,2,1,−5,3] 输出:6 解释:符合要求的子数组为[4,−1,2,1],其最大和为 6. 样例2: 输入:[1,2,3,4] 输出:10 解释:符合要求的子数组为[1,2,3,4],其最大和为 10. 挑战 要求时间复杂度为O(n) 注意事项 子数组最少包含一个数 输入测试数据 (每行一个参数)如何理解测试数据? 第一种解法:O(n)时间复杂度 class Sol

lintcode入门篇四

142. O(1)时间检测2的幂次 用 O(1) 时间检测整数 n 是否是 2 的幂次. 样例 Example 1: Input: 4 Output: true Example 2: Input: 5 Output: false 挑战 O(1) time 第一种方法:&的方法 class Solution: """ @param n: An integer @return: True or false """ ''' 1.使用递归的方法来

lintcode入门篇五

158. 两个字符串是变位词 写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串. 样例 样例 1: 输入: s = "ab", t = "ab" 输出: true 样例 2: 输入: s = "abcd", t = "dcba" 输出: true 样例 3: 输入: s = "ac", t = "ab" 输出: false 挑战 O(n)

lintcode入门篇六

185. 矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 样例 1: 输入: [[1]] 输出: [1] 样例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12] ] 输出: [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12] class Solution: ''' 1.首先i,j都不能小于0,并且i<len(matrix) and j<len(mat

lintcode入门篇七

211. 字符串置换 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 样例 Example 1: Input: "abcd", "bcad" Output: True Example 2: Input: "aac", "abc" Output: False class Solution: """ @param A:

lintcode入门篇十五

846. 多关键字排序 中文English 给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序. 样例 样例1 输入: array = [[2,50],[1,50],[3,100]] 输出: [[3,100],[1,50],[2,50]] 样例2 输入: array = [[2,50],[1,50],[3,50]] 输出: [[1,50],[2,50],[3,50]] class Solut