当前位置: 首页 > 知识库问答 >
问题:

在数组中查找两个商品的索引,这两个商品的价格加起来就是一个值

弓智明
2023-03-14

我正在尝试解决谷歌代码堵塞的问题。

问题

您在当地商店获得信用积分,并想购买两件商品。您首先穿过商店,创建一个所有可用商品的列表L。从这个列表中,您想购买两件商品,它们加起来等于信用积分的全部价值。您提供的解决方案将由两个整数组成,指示列表中商品的位置(首先是较小的数字)。

输入

输入的第一行给出了案例的数量,接着是N. N个测试案例。对于每个测试案例,将有:

一行包含C值,这是你在商店的信用额度。一行包含值I,即商店中的商品数量。包含用空格分隔的I个整数列表的一行。每个整数P表示商店中一件商品的价格。每个测试用例都有一个解决方案。输出

对于每个测试用例,输出一行包含“Case #x:”的内容,后跟两个商品的索引,这两个商品的价格加起来就是商店信用。应该首先输出较低的索引。

到目前为止,我这样做了。然而,当我将100,3,5,75,25作为输入时,我得到1,22,1作为输出,因为它第二次遍历数组。我如何得到1,2作为输出?

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int credit = in.nextInt();

        int number = in.nextInt();

        int[] items = new int[number];
        for (int i = 0; i < number; i++){
            items[i] = in.nextInt();
        }

        for (int i = 0; i < number; i++){
            for (int j = 0; j < number; j++){
                if (items[i] + items[j] == credit){
                    System.out.print(i + "," + j + " ");
                }
            }
        }
    }
}

共有2个答案

松翔
2023-03-14

您可以使用排序方法以及二叉搜索来使其成为更快的解决方案。例如:

假设输入价格为“100、3、5、75、25”

1)使用快速排序对此价目表进行排序。列表将变成(3,5,25,75,100)

2) 对每个项目使用二进制搜索来找到解决方案。

宇文峰
2023-03-14

您应该让内部循环仅从j=i1开始:

for (int i = 0; i < number - 1; i++){
     for (int j = i + 1; j < number; j++){
          if (items[i] + items[j] == credit){
               System.out.print(i + "," + j + " ");
          }
     }
}
 类似资料:
  • 所以我在一次在线面试中被要求解决这个问题,但失败了。我立即被拒绝了。我正在试图找出我的算法出了什么问题。 两个最大的数字 用您选择的编程语言编写一个函数,该函数接受一个整数数组并返回前两个最大数字的索引。记录边缘情况下的任何特殊行为(如果有的话)。该函数的运行时间应为其中N是数组的长度和附加空间。 我编写了这个方法来对C#中的数字进行排序: 关于记录边缘案例的特殊行为,我得到了以下回应: 对于数字

  • 问题内容: 我面临以下问题,我不确定什么是最佳实践。 考虑下表(该表会变大): id PK | Giver_id FK | FK | 日期 我正在使用InnoDB,据我了解,它会自动为两个外键列创建索引。但是,我还将在需要匹配以下特定组合的情况下进行大量查询: 。 每个这样的组合在表中将是唯一的。 在这些列上添加双列索引有什么好处,还是理论上两个单独的索引足够/相同? 问题答案: 如果您有两个单列

  • 商品评价 商品评价:指买家对所购买商品的评价。 一、商品评价的具体操作:在个人中心找到商品评价,找到商品对其评价,添加评价内容,添加商品图片。 二、商品评价在后台的具体显示以及详细操作: 1、评价用户:指评价内容对应的用户名称。 2、评价类型:指对商品作出的好评、中评、差评。 3、评价时间:指买家对商品作出评价的时间查询。 4、评价信息:指评价用户名称、用户评价类型、用户评分的信息。 5、评价内容

  • 问题内容: 我有两个numpy数组A和B。A包含唯一值,而B是A的子数组。 例如: 问题答案: 您可以使用带有- 如果您关心维护订单,也可以使用- 对于一般情况,当&是未排序的数组时,您可以在中引入选项,就像这样- 为了解决一般情况,我还会添加我最喜欢的内容- 样品运行-

  • 商品规格 一、添加规格:添加商品的规格便于在前台购买。具体操作如下: 1、规格值的展示方式可以为颜色、文字、图片。 2、添加规格名称,规格排序,是否启用:点击启用在前台会显示规格值的选项,点击筛选就会在前台筛选栏展示,选择展示方式是为了发布商品时方便关联规格项,规格值显示在前台规格选项中,具体请参照发布实物商品功能项。 3、商品规格主要作用:(商品列表中某一商品规格的连接) 4、相对应前台的展示:

  • 我已经读过一些其他的堆栈溢出线程: 在java中求两个多集的交集 我如何获得两个数组之间的交集作为一个新数组? 我试图检查两个数组以及它们的元素数(numElementsInX和numElementsInY),并返回一个包含数组x和y的公共值的新数组。他们的交集。 编辑代码