最大间距(数组、桶排序)
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 如果数组元素个数小于 2,则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。 示例 2: 输入: [10] 输出: 0 解释: 数组元素个数小于 2,因此返回 0。 说明:
- 你可以假设数组中所有元素都是非负整数,且数值在 32 位有符号整数范围内。
- 请尝试在线性时间复杂度和空间复杂度的条件下解决此问题。
解答:
class Solution {
    public int maximumGap(int[] nums) {
        int len = nums.length;
        Arrays.sort(nums);
        int temp = 0;
        int res = 0;
        if (len < 2)
            return 0;
        for (int i = 0; i < len - 1; i++) {
            temp = nums[i + 1] - nums[i];
            res = Math.max(res, temp);
        }
        return res;
    }
}
按以下要求实现程序功能(桶排序、算法初阶)
从键盘输入5个整型值
- 按从大到小顺序排序方法;
- 计算这些数的平均值的方法;
- 在主方法中调用这些方法,并输出相应的值。
解答:
import java.util.*;
class java_7445932 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        for (int a = 1; a < 6; a++) {
            System.out.print("请输入第 " + a + " 个值:");
            list.add(scanner.nextInt());
        }
        System.out.println(descending(list));
        System.out.println(getAvg(list));
    }
    public static List<Integer> descending(List<Integer> list) {
        list.sort(Collections.reverseOrder());
        return list;
    }
    public static Double getAvg(List<Integer> list) {
        return list.stream().mapToInt(Integer::new).average().getAsDouble();
    }
}
罗马数字转整数(哈希表、数学)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
- I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
- X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
- C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给你一个整数,将其转为罗马数字。
示例 1:
输入: num = 3 
输出: "III"
示例 2:
输入: num = 4 
输出: "IV"
示例 3:
输入: num = 9 
输出: "IX"
示例 4:
输入: num = 58 
输出: "LVIII" 
解释: L = 50, V = 5, III = 3.
示例 5:
输入: num = 1994 
输出: "MCMXCIV" 
解释: M = 1000, CM = 900, XC = 90, IV = 4.
提示:
- 1 <= num <= 3999
解答:
class Solution {
    public int romanToInt(String s) {
        int n = 0;
        for (int i = 0; i < s.length();) {
            char c = s.charAt(i);
            if (c == 'I') {
                if (i + 1 < s.length()) {
                    if (s.charAt(i + 1) == 'V') {
                        n += 4;
                        i += 2;
                    } else if (s.charAt(i + 1) == 'X') {
                        n += 9;
                        i += 2;
                    } else {
                        n += 1;
                        i++;
                    }
                } else {
                    n += 1;
                    i++;
                }
            } else if (c == 'X') {
                if (i + 1 < s.length()) {
                    if (s.charAt(i + 1) == 'L') {
                        n += 40;
                        i += 2;
                    } else if (s.charAt(i + 1) == 'C') {
                        n += 90;
                        i += 2;
                    } else {
                        n += 10;
                        i++;
                    }
                } else {
                    n += 10;
                    i++;
                }
            } else if (c == 'C') {
                if (i + 1 < s.length()) {
                    if (s.charAt(i + 1) == 'D') {
                        n += 400;
                        i += 2;
                    } else if (s.charAt(i + 1) == 'M') {
                        n += 900;
                        i += 2;
                    } else {
                        n += 100;
                        i++;
                    }
                } else {
                    n += 100;
                    i++;
                }
            } else if (c == 'V') {
                n += 5;
                i++;
            } else if (c == 'L') {
                n += 50;
                i++;
            } else if (c == 'D') {
                n += 500;
                i++;
            } else if (c == 'M') {
                n += 1000;
                i++;
            }
        }
        return n;
    }
}
本文内容到此结束了, 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问💬欢迎各位大佬指出。 主页:共饮一杯无的博客汇总👨💻
保持热爱,奔赴下一场山海。🏃🏃🏃
 
 
                     
            
        













 
                    

 
                 
                    