454.四数相加II
力扣题目链接
class Node{
int key;
int time;
Node next;
public Node(int key, int time) {
this.key = key;
this.time = time;
this.next = null;
}
}
class Solution1 {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
Node[] nodes = new Node[20];
int l = nums1.length;
for (int i = 0; i < l; i++) {
for (int j = 0; j < l; j++) {
int sum = nums1[i] + nums2[j];
int key = Math.abs(sum % 20);
if(nodes[key] == null){
nodes[key] = new Node(sum,1);
continue;
}
Node node = nodes[key];
while (node!= null){
if(node.key == sum){
node.time++;
break;
}
node = node.next;
}
if (node == null) {
Node newnode = new Node(sum,1);
newnode.next = nodes[key];
nodes[key] = newnode;
}
}
}
int num = 0;
for (int i = 0; i < l; i++) {
for (int j = 0; j < l; j++) {
int sum = nums3[i] + nums4[j];
int key = Math.abs(sum % 20);
Node node = nodes[key];
while (node != null){
if (node.key == (0-sum)){
num += node.time;
break;
}
node = node.next;
}
}
}
return num;
}
}
383. 赎金信
力扣题目链接
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
if(ransomNote.length() > magazine.length()){
return false;
}
char[] chars1 = magazine.toCharArray();
char[] chars2 = ransomNote.toCharArray();
int[] nums = new int[26];
for (char c : chars1) {
nums[(c-'a')]++;
}
for (char c : chars2) {
nums[(c-'a')]--;
}
for (int i:nums) {
if(i<0){
return false;
}
}
return true;
}
}