242.有效的字母异位词
力扣题目链接
class Solution {
public boolean isAnagram(String s, String t) {
int num[] = new int[26];
char[] chars1 = s.toCharArray();
char[] chars2 = t.toCharArray();
for (char c:chars1) {
num[(int) c %97] ++;
}
for (char c:chars2) {
num[(int) c %97] --;
}
for (int a:num){
if(a!=0)
return false;
}
return true;
}
}
349. 两个数组的交集
力扣题目链接
class Node{
int val;
Node next;
public Node(int val, Node next) {
this.val = val;
this.next = next;
}
@Override
public String toString() {
return "Node{" +
"val=" + val +
", next=" + next +
'}';
}
}
class Solution1 {
public int[] intersection(int[] nums1, int[] nums2) {
Node[] nodes = new Node[20];
List<Integer> list = new ArrayList<Integer>();
for (int i : nums1) {
int key = i % 20;
Node node = nodes[key];
Node pre = new Node(0, node);
if (node == null) {
pre.next = new Node(i, null);
nodes[key] = pre.next;
}
while (node != null) {
if (node.val == i) {
break;
}
pre = node;
node = node.next;
}
if (node == null) {
pre.next = new Node(i, null);
}
}
for (int i : nums2) {
int key = i % 20;
Node node = nodes[key];
while (node != null) {
if (node.val == i) {
if(!list.contains(i))
list.add(i);
break;
}
node = node.next;
}
}
int[] ints = new int[list.size()];
int l = 0;
for (Integer i : list) {
ints[l++] = i;
}
return ints;
}
}
202. 快乐数
力扣题目链接
class Node{
int val;
Node next;
public Node(int val, Node next) {
this.val = val;
this.next = next;
}
}
class Solution2 {
public boolean isHappy(int n) {
Node[] nodes = new Node[20];
int val = n;
while (true){
val = getSum(val);
if(val == 1){
return true;
}
int key = val % 20;
Node node = nodes[key];
if(node == null){
nodes[key] = new Node(val,null);
continue;
}
Node pre = null;
while (node!=null){
if(node.val == val){
return false;
}
pre = node;
node = node.next;
}
if(node == null){
pre.next = new Node(val,null);
}
}
}
public int getSum(int n){
int sum = 0;
for (int i = n; i >= 1; i/=10) {
int j = i % 10;
sum += j*j;
}
return sum;
}
}
1. 两数之和
力扣题目链接
public int[] twoSum(int[] nums, int target) {
Node[] nodes = new Node[20];
for (int i = 0; i < nums.length; i++) {
int difference = target - nums[i];
Node diffre = nodes[Math.abs(difference%20)];
while (diffre != null){
if(diffre.val == difference){
return new int[]{diffre.key,i};
}else {
diffre = diffre.next;
}
}
Node node = nodes[Math.abs(nums[i]%20)];
if(node == null){
nodes[Math.abs(nums[i]%20)] = new Node(nums[i],i,null);
}else {
while (node.next != null) {
node = node.next;
}
node.next = new Node(nums[i],i,null);
}
}
return null;
}
}
class Node{
int val;
int key;
Node next;
public Node(int val, int key, Node next) {
this.val = val;
this.key = key;
this.next = next;
}
}