【问题标题】:How to write a method that returns true if no row is longer than a preceding row, otherwise false?如果没有一行比前一行长,如何编写一个返回true的方法,否则返回false?
【发布时间】:2016-07-27 21:08:37
【问题描述】:

假设我有一个二维数组:

int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}}; 

我想编写一个方法来确保下一行的长度比数组的其余部分短我该怎么做?

基本上,如果没有行更长,我将如何编写一个返回 true 的方法 比前一行,否则为假?

这是我的逻辑,即使我很遥远,只是不明白逻辑上应该如何去做。

 public static boolean rowDecrease(int[][] t){
     //result empty array here
     for (int j = 0; j < t.length; j++) {
      for (int i = 0; i< t[i].length; i++) { // Sum of Columns
        if (t[i].length>result){
          result = t[i].length;
          return false;
        }
        if (t[i].length<result){
          result = t[i].length;
          return true;
        }


        }

      }

【问题讨论】:

  • 好的,到底是什么阻止了你?到目前为止你有什么?
  • 你可以通过s[i].length获取内部数组的长度。
  • 你试过了吗??
  • public static boolean rowLengthsDecrease(int[][] t){ //数组结果 for (int j = 0; j result){ result = t[i].length;返回假; } if (t[i].length
  • 问题正文下方有一个编辑链接。请将您的代码放入您的问题中,而不是 cmets

标签: java arrays for-loop boolean ragged


【解决方案1】:

您可以使用Java Stream

int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}};
List<Integer> S = Arrays.stream(s).map(i->i.length).collect(Collectors.toList());
boolean is = IntStream.range(0, S.size()).skip(1).allMatch(i->S.get(i)<=S.get(i-1));

希望对你有帮助。

【讨论】:

    【解决方案2】:

    请在以后发布之前尝试或提出现有代码的问题。否则,我们将不得不开始向您发送发票。

    public boolean shorterThanTheRest(int[][] s){
        int shortestLength = s[0].length + 1;
        for(int i = 0; i < s.length; i++)
            if(s[i].length < shortestLength)
                shortestLength = s[i].length;
            else
                return false;
         return true;
    }
    

    【讨论】:

    • 伙计,这不能简单一些吗?比如,可能在每个索引i 处,检查前一个索引i-1 的长度是否大于或等于。如果没有,请返回false。在循环外返回true
    • @DebosmitRay 我发帖后才意识到;但是,由于另一位用户发布了您描述的更简单的方法,我留下了我的答案只是为了表明它可以以不同的方式处理。但是是的,因为标准是确定行的长度是否不断减少,所以您的方法是最好的。
    • 哈哈,我刚看到那个帖子。我明白你在说什么,@Zulfe。 :)
    【解决方案3】:

    我认为类似这样的代码可以解决您的问题:

    boolean resultado = true;
    
    for(int i = 1; i < s.length; i++){
        if(s[i].length >= s[i-1].length) return false;
    }
    
    return true;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 2010-11-13
      相关资源
      最近更新 更多