功能实现疑问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
jonyj
V2EX    Java

功能实现疑问

  •  
  •   jonyj May 12, 2023 2406 views
    This topic created in 1084 days ago, the information mentioned may be changed or developed.

    已知 20 170 30 80 60 129 49 N 个数字 写一段代码,将这 N 个数字分为 N 组, 逻辑是数字相加需小于等于 200 , 例如 20+170=190 小于 200 即算 1 组, 20+170+30=220 大于 200 时 30 另算一组

    java 有哪些优雅有的实现方式呢?

    8 replies    2023-05-12 17:37:18 +08:00
    aahao
        1
    aahao  
       May 12, 2023
    来自 ChatGPT:

    在 Java 中,可以使用不同的方式实现将一组数字分组的逻辑。以下是一种可能的优雅实现方式:

    import java.util.ArrayList;
    import java.util.List;

    public class NumberGrouping {
    public static void main(String[] args) {
    int[] numbers = {20, 170, 30, 80, 60, 129, 49}; // 输入的数字数组
    List<List<Integer>> groups = groupNumbers(numbers); // 分组后的结果

    // 打印每个分组
    for (int i = 0; i < groups.size(); i++) {
    System.out.println("Group " + (i + 1) + ": " + groups.get(i));
    }
    }

    public static List<List<Integer>> groupNumbers(int[] numbers) {
    List<List<Integer>> groups = new ArrayList<>();
    List<Integer> currentGroup = new ArrayList<>();
    int sum = 0;

    for (int number : numbers) {
    if (sum + number <= 200) {
    // 将数字添加到当前分组
    currentGroup.add(number);
    sum += number;
    } else {
    // 当前分组已满,添加到结果中,并创建新的分组
    groups.add(currentGroup);
    currentGroup = new ArrayList<>();
    currentGroup.add(number);
    sum = number;
    }
    }

    // 添加最后一个分组
    groups.add(currentGroup);

    return groups;
    }
    }

    这个代码示例中,我们首先定义了一个 groupNumbers 方法,它接受一个整数数组作为输入,并返回一个包含分组结果的二维列表。然后,在 main 方法中,我们声明了一个示例数字数组,并调用 groupNumbers 方法来获取分组结果。

    在 groupNumbers 方法中,我们使用了两个列表:groups 用于存储最终的分组结果,currentGroup 用于临时存储当前正在构建的分组。我们还使用了一个变量 sum 来跟踪当前分组中数字的总和。

    我们遍历输入的数字数组,并根据数字的总和是否超过 200 来判断是否需要创建新的分组。如果总和未超过 200 ,则将数字添加到当前分组,并更新总和;否则,将当前分组添加到结果列表中,然后创建一个新的分组,将当前数字添加到新的分组中,并更新总和。

    最后,我们将最后一个分组添加到结果列表中,并返回最终的分组结果。

    这种实现方式简洁明了,并且逻辑清晰,可以满足将一组数字按照总和不超过 200 的条件进行分组的要求。
    vcbal
        2
    vcbal  
       May 12, 2023   1
    你这个不是经典算法题 爬楼梯吗。。。
    optional
        3
    optional  
       May 12, 2023 via iPhone
    你这是不是少了优化目标,比如分组数量最少,分组均方差最小之类的
    siweipancc
        4
    siweipancc  
       May 12, 2023 via iPhone
    啊这……真有这么简单的需求吗?还是说无序访问?所有可能分组模式?
    jonyj
        5
    jonyj  
    OP
       May 12, 2023
    @aahao 能方便问下你是如何提问 chatgtp 的吗?我就没能得到想要的答案难道是我提问的方式有问题....
    tanghongkai
        6
    tanghongkai  
       May 12, 2023
    @jonyj 盲猜全文复制直接问的,可以看看你提问 chatgpt 的内容吗
    JasonLaw
        7
    JasonLaw  
       May 12, 2023 via iPhone
    你这个问题就有问题,你说“ 将这 N 个数字分为 N 组”,这个明显不对。然后怎么才算一组,是不是组的总和要尽量大?组的数量是不是要尽量少。

    BTW ,要先理解问题,才能解决问题。
    JasonLaw
        8
    JasonLaw  
       May 12, 2023 via iPhone
    @vcbal #2 爬楼梯是什么题?可以给一下 LeetCode 链接吗?这个 https://leetcode.com/problems/climbing-stairs/
    About     Help     Advertise     Blog     API     FAQ     Solana     4933 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 09:27 PVG 17:27 LAX 02:27 JFK 05:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86