和为S的两个数字

57. 和为 s 的两个数字 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。分别指向数组的左右两端,然后不断移动指针,直到找到一组和为。[10,30] 或者 [30,10][2,7] 或者 [7,2] 阅读详情

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


import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {

        ArrayList<ArrayList<Integer>> lists = new ArrayList<>();

        int begin = 0;
        int end = array.length - 1;
        while(begin < end)
        {
            int currSum = array[begin] + array[end];
            if(currSum == sum)
            {
                ArrayList<Integer> list = new ArrayList<>();
                list.add(array[begin]);
                list.add(array[end]);
                list.add(array[begin] * array[end]);
                lists.add(list);
                begin++;
                end--;
            }
            else
            {
                if(currSum < sum)
                    begin++;
                else
                    end--;
            }
        }


        if(lists.size() ==0) return new ArrayList<Integer>();
        //if(lists.size() ==1) return lists.get(0);
        Collections.sort(lists, new Comparator<ArrayList<Integer>>() {

            @Override
            public int compare(ArrayList<Integer> o1, ArrayList<Integer> o2) {
                    return o1.get(2).compareTo(o2.get(2));

            }
        });

        ArrayList<Integer> result = new ArrayList<>();
        ArrayList<Integer> temp = lists.get(0);
        for(int i = 0;i < 2; i++){
            result.add(temp.get(i));
        }

        return result;
    }
}
K-means在关键词聚类中的尝试 K-means在文本聚类中的尝试 K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。 K-means算法的关键点在于: 初始k个聚类中心的选择 距离的计... 阅读详情

相关推荐

论文笔记--Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting

Summary 在交通预测问题上,现有的框架通常利用给定的空间邻接图和复杂的机制来建模空间和时间关联。作者认为使用给定的空间邻接图会限制模型的有效时空相关性学习,并且它们通常使用单独的模块来实现空间和时间相关性,或者只使用独立的组件来捕获局部或全局的异质依赖关系,割裂了时空依赖关系。为此作者提出一种时空融合图神经网络用于交通预测。提出一种数据驱动的“时间图”生成方法,以此来补偿空间图可能没有反映的相关性。提出一种新的交通预测方法。 Problem Definition 交通预测中的挑战 以上图为

chenxino的博客 1755

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

和为S的两个数字 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 解题思路 数组是有序,在数组首尾各放入一指针,判断两指针的数的和是否与sum相等,如果小,plow向前进一步;如果大,phigh往后退一步。 代码 import java.util.ArrayLi...

weixin_41676282的博客 259

stm32f103c8t6的中文字库

stm32的成熟中文字库,上手即用,操作简单

nbbskk的博客 3653

[剑指Offer]和为S的两个数字(Java)

题目 和为S的两个数字 -- newcoder 剑指Offer 42 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数, 使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 思路 * 1、双指针,一个指向头节点,一个指向尾节点 * 2、数组有序,利用首尾指针,找到相差最大的和等于S的两个元素即可 ...

聚沙成塔 368

台积电技术研发实力

台积电技术研发实力 台积电在半导体行业的地位毋庸置疑。他们究竟有多强大,大部分读者了解得可能非常片面。从最新公布的2019年财报里,看看台积电的真正实力。 一、台积电在市场上的地位 根据公司财报,台积公司在先进制程技术、特殊制程技术,以及先进封装技术的发展上持续领先全球集成电路制造服务领域,2019年的市场占有率为52%。台积公司总体营收以地区划分(主要依据客户营运总部所在地),来自北美市场的营收占台积公司总体营收的60%、日本与中国大陆以外的亚太市场占9%、中国大陆市场占20%、欧洲、中东及非洲市场占6

吴建明wujianming_110117 1901

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月10日

前文:SABRE 3D系列机台简介本章节详细阐述了在维护期间锁定电气、机械、热力学及重力组件以及化学管线输入的锁定操作流程,旨在降低人员受伤风险。p42~p55。

weixin_46735260的博客 1615

牛客题解 | 和为S的两个数字

牛客题库题解

wc529065的博客 1073

AGV、RGV、四向车openTCS调度系统(三)车辆适配器解读,封装自己的适配器

AGV、RGV、四向车调度。理解适配器的整体作用,以及如何使用官方例子改造自己的适配器,

要这头发有何用 3612

剑指OFFER-和为S的两个数字

剑指OFFER-和为S的两个数字QuestionSolution双指针 Question 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 关键词:有序求和 双指针 Solution 虽然可以暴力循环,但是上一题用双指针找连续和,注意指针是从头尾开始就行了。 双指...

会有Mao的 164

[特殊字符] RK3588 平台上基于 Panfrost 的 Mesa 驱动编译全过程

摘要: 本文详细记录了在RK3588平台(Ubuntu 20.04 aarch64)上编译基于Panfrost的Mesa驱动的全过程。内容包括:1)系统依赖安装;2)libdrm编译;3)Mesa配置参数优化;4)LLVM 15与SPIRV工具链的安装方法;5)SPIRV-Tools版本问题的解决方案;6)最终编译命令及常见错误处理。关键点在于正确设置工具链路径(PKG_CONFIG_PATH)和版本匹配(LLVM 15对应SPIRV-LLVM-Translator v15.0.0),推荐将组件安装在/op

梁俊星的博客 941

ImportError: DLL load failed: 找不到指定的程序的解决方案

本文主要介绍了ImportError: DLL load failed: 找不到指定的程序的解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 18万+

LeetCode & 剑指Offer:和为S的两个数字、和为S的连续正数序列、和为S的子数组

剑指Offer(四十二):和为S的两个数字 题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 1、思路 对于一个数组,我们可以定义两个指针,一个从左往右遍历(pleft),另一个从右往左遍历(pright)。首先,我们比较第一个数字和最后一个数字的和cu...

Tiger数学之家的博客 404

计算机组成原理(第三版)唐朔飞-第九章控制单元的功能-课后习题

计算机组成原理(第三版)唐朔飞-第九章控制单元的功能-课后习题

weixin_45735391的博客 4万+

JZ57 和为S的两个数字

输入一个递增排序的数组array和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。

Crazyaegdg的博客 287

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

剑指offer57_和为S的两个数字

两数之和

君鼎的博客 535

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

剑指offer-和为S的两个数字

36.和为S的两个数字 题目内容: 代码及思路: 因为输入是一个递增排序,因此可以设置两个指针分别指向序列的最小值small和最大值big,如果两者的和大于S,则big--,否则small++; #include<iostream> #include<vector> using namespace std; class Solution { public: ...

larklili的博客 128

剑指Offer刷题(和为S的两个数字)

剑指Offer刷题(和为S的两个数字01)一.题目描述二.代码(C++)三.提交记录四.备注 一.题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 二.代码(C++) class Solution { public: vector<int> FindNumbersWithSum(vector<int> array,int sum

Umbraner的博客 171

Java篇—和为S的两个数字

题目描述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得它们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的那一对。 思路分析: 由于是递增排序的数组,所以,我们可以使用两个指针,分别指向数组的首元素和尾元素(一个从前往后,指向较小的数,一个从后往前,指向较大的数),这样找到的两个数的乘积必然是最小的。当两个数的和大于S时,较大的数字指针向左移动,当两个数的和小...

戚同学的博客 314

剑指 Offer 57. 和为s的两个数字 06

双指针+单调性

2402_84062064的博客 355

牛客_和为S的两个数字

【代码】牛客_和为S的两个数字。

d3y1`5 81_09 244

和为s的两个数字

1、题目 2、思路 首先定义两个指针,第一个指针p指向数组的第一个数字,第二个指针q指向数组的最后一个数字。如果p+q=s,则找到要找的数字;如果p+q #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; /* 输入一个递增排序的数组和一个数字s,在数组中查找两个...

小麦大大博客 260

每天一道剑指offer-和为S的两个数字

考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默响起来一个声音:...

WantFlyDaCheng的博客 174

Nowcoder java-和为S的两个数字

Nowcoder java-和为S的两个数字 (题目来自牛客网) 思路 若b>a,且存在, a + b = s; (a - m ) + (b + m) = s 则:(a - m )(b + m)=ab - (b-a)m - m*m < ab;说明外层的乘积更小; 也就是说依然是左右夹逼法!!!只需要2个指针 1.left开头,right指向结尾 2.如果和小于sum,说明太小了,left右移寻找更大的数 3.如果和大于sum,说明太大了,right左移寻找更小的数 4.和相等,把left和r

weixin_43675940的博客 144

剑指offer之和为S的两个数字

剑指offer之和为S的两个数字题目描述输出描述解题思路Code 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述 对应每个测试案例,输出两个数,小的先输出。 解题思路 Two pointers的思想 Code class Solution { public: vector&lt;int...

gq__97的博客 450
上一篇: 平衡二叉树
下一篇: 和为S的连续正数序列
Shingle_
博客等级 码龄10年 185粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值