242.有效的字母异位词
class Solution {
public boolean isAnagram(String s, String t) {
char[] hash=new char[26];
char[] s1=s.toCharArray();
char[] t1=t.toCharArray();
if(s.equals(t)){
return false;
}else{
for(int i=0;i<s1.length;i++){
hash[s1[i]-'a']++;
}
for(int j=0;j<t1.length;j++){
hash[t1[j]-'a']--;
}
for(int a=0;a<hash.length;a++){
if(hash[a]!=0){
return false;
}
}
return true;
}
}
}
349. 两个数组的交集
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> a1=new HashSet<Integer>();
Set<Integer> a2=new HashSet<Integer>();
for(int i=0;i<nums1.length;i++){
a1.add(nums1[i]);
}
for(int j=0;j<nums2.length;j++){
a2.add(nums2[j]);
}
Set<Integer> a3=new HashSet<Integer>();
if(a1.size()>a2.size()){
for(int num : a2){
if(a1.contains(num)){
a3.add(num);
}
}
}else{
for(int num : a1){
if(a2.contains(num)){
a3.add(num);
}
}
}
int b=0;
int[] aaa=new int[a3.size()];
for(int num : a3){
aaa[b++]=num;
}
return aaa;
}
}
1. 两数之和
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] arr=new int[2];
Map<Integer,Integer> m=new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
int s=target-nums[i];
if(m.get(s)!=null){
arr[0]=m.get(s);
arr[1]=i;
return arr;
}else{
m.put(nums[i],i);
}
}
return new int[0];
}
}
第454题.四数相加II
class Solution {
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
Map<Integer,Integer> m=new HashMap<Integer,Integer>();
for(int i:nums1){
for(int j:nums2){
m.put(i+j,m.getOrDefault(i+j,0)+1);
}
}
int count=0;
for(int i:nums3){
for(int j:nums4){
if(m.containsKey(-i-j)){
count+=m.get(-i-j);
}
}
}
return count;
}
}
第15题. 三数之和
class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> list=new ArrayList<>();
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
if(nums[i]>0){
return list;
}
if(i>0&&nums[i]==nums[i-1]){
continue;
}
int left=i+1;
int right=nums.length-1;
while(right>left){
int sum=nums[i]+nums[left]+nums[right];
if(sum>0){
right--;
}else if(sum<0){
left++;
}else{
List list1=new ArrayList();
list1.add(nums[i]);
list1.add(nums[left]);
list1.add(nums[right]);
list.add(list1);
while(right>left&&nums[left]==nums[left+1]){
left++;
}
while(right>left&&nums[right]==nums[right-1]){
right--;
}
left++;
right--;
}
}
}
return list;
}
}
第18题. 四数之和
class Solution {
public List<List<Integer>> fourSum(int[] nums, int target) {
List<List<Integer>> list=new ArrayList();
Arrays.sort(nums);
for(int i=0;i<nums.length;i++){
if(nums[i]>target&&target>0&&nums[i]>0){
return list;
}
if(i>0&&nums[i]==nums[i-1]){
continue;
}
for(int j=i+1;j<nums.length;j++){
if(j>i+1&&nums[j]==nums[j-1]){
continue;
}
int left=j+1;
int right=nums.length-1;
while(right>left){
long sum=(long)nums[i]+nums[j]+nums[left]+nums[right];
if(sum-target>0){
right--;
}else if(sum-target<0){
left++;
}else{
List list1=new ArrayList();
list1.add(nums[i]);
list1.add(nums[j]);
list1.add(nums[left]);
list1.add(nums[right]);
list.add(list1);
while(right>left&&nums[left]==nums[left+1]){
left++;
}
while(right>left&&nums[right]==nums[right-1]){
right--;
}
left++;
right--;
}
}
}
}
return list;
}
}