javapublic class Solution {
public String multiply(String num1, String num2) {
if (num1.equals("0") || num2.equals("0")) {
return "0";
}
int[] result = new int[num1.length() + num2.length()];
for (int i = num1.length() - 1; i >= 0; i--) {
for (int j = num2.length() - 1; j >= 0; j--) {
int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');
int p1 = i + j, p2 = i + j + 1;
int sum = mul + result[p2];
result[p2] = sum % 10;
result[p1] += sum / 10;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.length; i++) {
if (i == 0 && result[i] == 0) {
continue;
}
sb.append(result[i]);
}
return sb.toString();
}
}
javapublic class Solution {
public String[] findRestaurant(String[] list1, String[] list2) {
Map<String, Integer> indexMap = new HashMap<>();
for (int i = 0; i < list1.length; i++) {
indexMap.put(list1[i], i);
}
int minIndexSum = Integer.MAX_VALUE;
List<String> commonRestaurants = new ArrayList<>();
for (int i = 0; i < list2.length; i++) {
if (indexMap.containsKey(list2[i])) { // 共同爱好
int indexSum = i + indexMap.get(list2[i]); // 计算索引和
if (indexSum < minIndexSum) { //是否是最小索引和
minIndexSum = indexSum;
commonRestaurants.clear();
commonRestaurants.add(list2[i]);
} else if (indexSum == minIndexSum) {
commonRestaurants.add(list2[i]);
}
}
}
return commonRestaurants.toArray(new String[0]);
//return commonRestaurants.toArray(new String[0]);
}
}
javapublic class Solution {
public int coinChange(int[] coins, int amount) {
// 初始化一个比amount大的数,表示无法凑成的金额
int max = amount + 1;
// 初始化dp数组,所有值设为最大值
int[] dp = new int[amount + 1];
Arrays.fill(dp, max);
// 金额为0时,不需要任何硬币
dp[0] = 0;
// 遍历所有金额
for (int i = 1; i <= amount; i++) {
// 遍历所有硬币
for (int coin : coins) {
// 如果当前金额大于等于硬币面值
if (i >= coin) {
// 更新dp[i]为dp[i]和dp[i - coin] + 1的最小值
dp[i] = Math.min(dp[i], dp[i - coin] + 1);
}
}
}
// 如果dp[amount]没有被更新过,说明无法凑成该金额
return dp[amount] == max ? -1 : dp[amount];
}
}
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!