跳跃游戏(贪心、数组)

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

示例 2:

输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。

提示:

  • 1 <= nums.length <= 3 * 104
  • 0 <= nums[i] <= 105

解答:

class Solution {
    public boolean canJump(int[] nums) {
        boolean can = true;
        if (nums.length < 2) {
            return can;
        }
        int n = nums.length;
        int stride = 1;
        for (int i = n - 2; i >= 0; i--) {
            if (nums[i] < stride) {
                stride++;
                can = false;
            } else {
                can = true;
                stride = 1;
            }
        }
        return can;
    }
}

位1的个数(位运算)

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量(https://baike.baidu.com/item/%E6%B1%89%E6%98%8E%E9%87%8D%E9%87%8F))。

提示:

  • 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
  • 在 Java 中,编译器使用二进制补码(https://baike.baidu.com/item/二进制补码/5295284)记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。

示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。 示例 2: 输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。 示例 3: 输入:11111111111111111111111111111101 输出:31 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

提示:

  • 输入必须是长度为 32 的 二进制串

进阶

  • 如果多次调用这个函数,你将如何优化你的算法?

解答:

public class Solution {
    public int hammingWeight(int n) {
        int count = 0;
        while (n != 0) {
            if ((n & 1) == 1)
                count++;
            n >>>= 1;
        }
        return count;
    }
}

获取硬盘信息(计算机)

获取硬盘的分区信息,以及每个分区的磁盘空间及剩余空间

解答:

import java.io.File;
import java.text.DecimalFormat;
public class Ypxx {
    public static void main(String[] args) {
        File[] roots = File.listRoots();
        for (File file : roots) {
            System.out.println(file.getPath() + "信息如下:");
            long free = file.getFreeSpace();
            long total = file.getTotalSpace();
            long use = total - free;
            System.out.println("空闲未使用 = " + change(free) + "G");
            System.out.println("已经使用 = " + change(use) + "G");
            System.out.println("总容量 = " + change(total) + "G");
            System.out.println("使用百分比 = " + bfb(use, total));
            System.out.println();
        }
    }
    public static long change(long num) {
        return num / 1024 / 1024 / 1024;
    }
    public static String bfb(Object num1, Object num2) {
        double val1 = Double.valueOf(num1.toString());
        double val2 = Double.valueOf(num2.toString());
        if (val2 == 0) {
            return "0.0%";
        } else {
            DecimalFormat df = new DecimalFormat("#0.00");
            return df.format(val1 / val2 * 100) + "%";
        }
    }
}

本文内容到此结束了, 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问💬欢迎各位大佬指出。 主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃