跳跃游戏(贪心、数组)
给定一个非负整数数组 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) + "%";
}
}
}
本文内容到此结束了, 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 如有错误❌疑问💬欢迎各位大佬指出。 主页:共饮一杯无的博客汇总👨💻
保持热爱,奔赴下一场山海。🏃🏃🏃