Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和

简介: Java每日一练(20230423) 数组元素统计、杨辉三角II、二进制求和

1. 数组元素统计

定义一个长度为5的数组arr1,用于存放5个1~9的随机整数(范围包含1和9),再定义一个长度为2的数组arr2,统计arr1中的元素对2求余等于0的个数,保存到arr2[0], 统计arr1中的元素对3求余等于0的个数,保存到arr2[1],在控制台打印输出arr2的所有元素

出处:

https://edu.csdn.net/practice/26319564

代码:

import java.util.Random;
public class RandomTest {
    public static void main(String[] args) {
        int arr1[] = new int[5];
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = new Random().nextInt(9) + 1;
        }
        int i2 = 0;
        int j3 = 0;
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] % 2 == 0) {
                i2++;
            }
            if (arr1[i] % 3 == 0) {
                j3++;
            }
        }
        int arr2[] = new int[2];
        arr2[0] = i2;
        arr2[1] = j3;
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }
}

输出:


2. 杨辉三角 II

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: rowIndex = 3

输出: [1,3,3,1]


示例 2:

输入: rowIndex = 0

输出: [1]


示例 3:

输入: rowIndex = 1

输出: [1,1]


提示:

  • 0 <= rowIndex <= 33

进阶:

你可以优化你的算法到 O(rowIndex) 空间复杂度吗?

出处:

https://edu.csdn.net/practice/26319565

代码:

import java.util.*;
public class getRow {
    public static class Solution {
        public List<Integer> getRow(int rowIndex) {
            List<Integer> row = new ArrayList<Integer>();
            for (int i = 0; i < rowIndex + 1; i++) {
                row.add(0, 1);
                for (int j = 1; j < row.size() - 1; j++)
                    row.set(j, row.get(j) + row.get(j + 1));
            }
            return row;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        for (int i = 0; i < 5; i++) {
            System.out.println(s.getRow(i));
        }
    }
}

输出:

[1]

[1, 1]

[1, 2, 1]

[1, 3, 3, 1]

[1, 4, 6, 4, 1]

```Java
class Solution {
    public List getRow(int rowIndex) {
        List row = new ArrayList();
        for (int i = 0; i < rowIndex + 1; i++) {
            row.add(0, 1);
            for (int j = 1; j < row.size() - 1; j++)
                row.set(j, row.get(j) + row.get(j + 1));
        }
        return row;
    }
}
```

3. 二进制求和

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 10

示例 1:

输入: a = "11", b = "1"

输出: "100"

示例 2:

输入: a = "1010", b = "1011"

输出: "10101"


提示:

  • 每个字符串仅由字符 '0''1' 组成。
  • 1 <= a.length, b.length <= 10^4
  • 字符串如果不是 "0" ,就都不含前导零。

出处:

https://edu.csdn.net/practice/26319566

代码:

import java.util.*;
public class addBinary {
    public static class Solution {
        public String addBinary(String a, String b) {
            StringBuffer s1 = new StringBuffer(a);
            s1.reverse();
            StringBuffer s2 = new StringBuffer(b);
            s2.reverse();
            if (s1.length() > s2.length()) {
                int n = s1.length() - s2.length();
                for (int i = 0; i < n; i++) {
                    s2.append('0');
                }
            } else if (s1.length() < s2.length()) {
                int n = s2.length() - s1.length();
                for (int i = 0; i < n; i++) {
                    s1.append('0');
                }
            }
            StringBuffer stringBuffer = new StringBuffer("");
            int i = 0;
            char flag = '0';
            while (i < s1.length() && i < s2.length()) {
                if (flag == '0') {
                    if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) == '1') {
                        flag = '1';
                        stringBuffer.append('0');
                    } else if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) == '0') {
                        stringBuffer.append('0');
                    } else {
                        stringBuffer.append('1');
                    }
                } else {
                    if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) == '1') {
                        flag = '1';
                        stringBuffer.append('1');
                    } else if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) == '0') {
                        flag = '0';
                        stringBuffer.append('1');
                    } else {
                        flag = '1';
                        stringBuffer.append('0');
                    }
                }
                i++;
            }
            if (flag == '1') {
                stringBuffer.append(flag);
            }
            stringBuffer.reverse();
            return stringBuffer.toString();
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        String a = "11", b = "1";
        System.out.println(s.addBinary(a,b));
        a = "1010"; b = "1011";
        System.out.println(s.addBinary(a,b));
    }
}

输出:

100

10101


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力!

🌟 收藏,你的青睐是我努力的方向!

评论,你的意见是我进步的财富!  

主页:https://hannyang.blog.csdn.net/


目录
相关文章
|
9月前
|
Java Go 开发工具
【Java】(2)Java数据类型阐述、基本数据类型的占用和范围、二进制的讲述
数据的一种表示形式。十进制表示满十进一原则。二进制表示满二进一原则。例如:十进制例如:二进制计算机在任何情况下都只能识别二进制。
472 1
|
C语言 C++
【实战指南】 C/C++ 枚举转字符串实现
本文介绍了在C/C++中实现枚举转字符串的实用技巧,通过宏定义与统一管理枚举名,提升代码调试效率并减少维护错误。
656 96
|
安全 Java API
【Java性能优化】Map.merge()方法:告别繁琐判空,3行代码搞定统计累加!
在日常开发中,我们经常需要对Map中的值进行累加统计。}else{代码冗长,重复调用get()方法需要显式处理null值非原子操作,多线程下不安全今天要介绍的方法,可以让你用一行代码优雅解决所有这些问题!方法的基本用法和优势与传统写法的对比分析多线程安全版本的实现Stream API的终极优化方案底层实现原理和性能优化建议一句话总结是Java 8为我们提供的Map操作利器,能让你的统计代码更简洁、更安全、更高效!// 合并两个列表});简单累加。
1178 0
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
455 16
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
389 17
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
291 4
|
Java
那些与Java Set擦肩而过的重复元素,都经历了什么?
在Java的世界里,Set如同一位浪漫而坚定的恋人,只对独一无二的元素情有独钟。重复元素虽屡遭拒绝,但通过反思和成长,最终变得独特,赢得了Set的认可。示例代码展示了这一过程,揭示了成长与独特性的浪漫故事。
177 4
|
存储 算法 Java
为什么Java Set如此“挑剔”,连重复元素都容不下?
在Java的集合框架中,Set是一个独特的接口,它严格要求元素不重复,适用于需要唯一性约束的场景。Set通过内部数据结构(如哈希表或红黑树)和算法(如哈希值和equals()方法)实现这一特性,自动过滤重复元素,简化处理逻辑。示例代码展示了Set如何自动忽略重复元素。
263 1
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
1465 113
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
272 3