42.和为S的两个数字(python)

题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

输出描述:

对应每个测试案例,输出两个数,小的先输出。

方法一:两层for循环,得到的就是乘积最小的
1 class Solution:
2     def FindNumbersWithSum(self, array, tsum):
3         # write code here
4         for i in range(0,len(array)-1):
5             for j in range(1,len(array)):
6                 if array[i]+array[j] == tsum:
7                     return array[i],array[j]
8         return []

2019-12-25 19:07:51

原文地址:https://www.cnblogs.com/NPC-assange/p/12098471.html

时间: 2024-10-05 09:16:30

42.和为S的两个数字(python)的相关文章

剑指offer 42.和为S的两个数字

剑指offer 42.和为S的两个数字 题目 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 思路 同样是滑动窗口题目,设置左右两个游标,然后计算和,若和小,那么左侧游标增加,区间和大,右侧游标减小,保存结果的时候要比较一下更符合条件的数. 代码 public ArrayList<Integer> FindNumbersWithSum(int[]

和为s的两个数字-python

思路:因为数组是递增排序的,和相同的两个数,隔的越远,积越小,因此用两个指针,一个从前一个从后找,找到的第一个就是想要的最小的一组了 # -*- coding:utf-8 -*- class Solution: def FindNumbersWithSum(self, array, tsum): # write code here p1 = 0 p2 = len(array)-1 while p2>=p1: if array[p1] + array[p2] == tsum: return [ar

和为S的两个数字VS和为S的连续正数序列

题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 思路:最初我们找到数组的第一个数字和最后一个数字.首先定义两个指针,第一个指针指向数组的第一个(也就是最小的)数字,第二个指针指向数组的最后一个(也就是最大的)数字.当两个数字的和大于输入的数字时,把较大的数字往前移动:当两个数字的和小于数字时,把较小的数字往后移动:当相等时,打完收工.这样扫描的顺序是从数组的两端向数组的中间扫描. #include "stdafx.

输入两个数字,将比较结果输出到页面

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <title>比较两个数字大小</title> 7 <meta name="descripti

数组中只出现一次的两个数字

题目:给定一个整型数组,其中有两个数字只出现一次,其余的数字都出现两次,找出这两个只出现一次的数字.时间复杂度为O(n),空间复杂度为O(1). 异或运算的特性:相等的两个整数异或的结果为0:一个整数与0进行异或运算的结果为其本身. 基本思想:将这两个只出现一次的数字分到两个数组中,这样就很容易找到只出现一次的数字. 采用上述思想需要解决的问题: 1.如何才能保证两个只出现一次的数字分别位于两个数组? 2.空间复杂度为O(1),需要在原数组上进行分割操作,这个如何做到? 解决办法: 1.将数组中

java . 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。

1 import java.util.HashMap; 2 import java.util.Map; 3 import java.util.Map.Entry; 4 //请在小于99999的正整数中找符合下列条件的数,它既是完全平方数, 5 //又有两位数字相同,如:144,676. 6 public class wqs { 7 8 //完全平方数 9 public static boolean iswqs(int n){ 10 int i; 11 double dn=Math.sqrt(n)

剑指Offer36 数组所有数字出现两次,只有两个出现了一次,找出这两个数字

1 /************************************************************************* 2 > File Name: 38_NumbersAppearOnce.cpp 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年09月03日 星期六 10时50分32秒 6 *******************************

添加两个数字(Leetcode)

问题: 给定两个非空的链表,表示两个非负整数.数字以相反的顺序存储,每个节点包含一个数字.添加两个数字并将其作为链表返回. 您可以假设两个数字不包含任何前导零,除了数字0本身. 输入:(2 - > 4 - > 3)+(5 - > 6 - > 4)输出: 7 - > 0 - > 8 代码: 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * Li

C语言:一个数组中只有两个数字是出现一次

1 //1.一个数组中只有两个数字是出现一次, 2 //其他所有数字都出现了两次. 3 //找出这两个数字,编程实现.a 4 5 //^=单独两个数的^结果 6 //单独出现的两个数不同位的标记 7 //position: ^结果中第一个出现1的位置 8 //position位两个数肯定有一个为0 ,一个为1 9 //把数组分成两部分 10 //1:position为1 11 //2:position为0 12 //每一部分都有一个只出现一次的数字,其他的都是成对出现 13 //每一部分^结果为