242.有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
说明:
你可以假设字符串只包含小写字母。
class Solution {
public boolean isAnagram(String s, String t) {
char[] s1=s.toCharArray();;
char[] s2=t.toCharArray();
Arrays.sort(s1);
Arrays.sort(s2);
return String.valueOf(s1).equals(String.valueOf(s2));
}
}
示例:
输入:[4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
0 <= A[i] <= 1000
class Solution {
public int[] sortArrayByParityII(int[] A) {
int n=A.length;
for(int i=0,j=1;i<n&&j<n;){
while(i<n&&(A[i]%2==0)) i+=2;
while(j<n&&(A[j]%2!=0)) j+=2;
if(i<n&&j<n){
int t=A[i];
A[i]=A[j];
A[j]=t;
}
}
return A;
}
}
示例:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
提示:
arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2 中的元素 arr2[i] 各不相同
arr2 中的每个元素 arr2[i] 都出现在 arr1 中
class Solution {
public int[] relativeSortArray(int[] arr1, int[] arr2) {
int[] nums = new int[1001];
int[] res = new int[arr1.length];
//遍历arr1,统计每个元素的数量
for (int i : arr1) {
nums[i]++;
}
//遍历arr2,处理arr2中出现的元素
int index = 0;
for (int i : arr2) {
while (nums[i]>0){
res[index++] = i;
nums[i]--;
}
}
//遍历nums,处理剩下arr2中未出现的元素
for (int i = 0; i < nums.length; i++) {
while (nums[i]>0){
res[index++] = i;
nums[i]--;
}
}
return res;
}
}
示例 1:
输入:R = 1, C = 2, r0 = 0, c0 = 0
输出:[[0,0],[0,1]]
解释:从 (r0, c0) 到其他单元格的距离为:[0,1]
示例 2:
输入:R = 2, C = 2, r0 = 0, c0 = 1
输出:[[0,1],[0,0],[1,1],[1,0]]
解释:从 (r0, c0) 到其他单元格的距离为:[0,1,1,2]
[[0,1],[1,1],[0,0],[1,0]] 也会被视作正确答案。
示例 3:
输入:R = 2, C = 3, r0 = 1, c0 = 2
输出:[[1,2],[0,2],[1,1],[0,1],[1,0],[0,0]]
解释:从 (r0, c0) 到其他单元格的距离为:[0,1,1,2,2,3]
其他满足题目要求的答案也会被视为正确,例如 [[1,2],[1,1],[0,2],[1,0],[0,1],[0,0]]。
提示:
1 <= R <= 100
1 <= C <= 100
0 <= r0 < R
0 <= c0 < C
class Solution {
public int[][] allCellsDistOrder(int R, int C, int r0, int c0) {
int[][] res = new int[R*C][2];
int index = 0;
for(int i = 0 ; i < R ; i ++)
for(int j = 0 ; j < C ; j ++) {
int[] xy = {i,j};
res[index++] = xy;
}
Arrays.sort(res, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
int dis1 = Math.abs(o1[0]-r0)+Math.abs(o1[1]-c0);
int dis2 = Math.abs(o2[0]-r0)+Math.abs(o2[1]-c0);
return dis1 - dis2;
}
});
return res;
}
}
示例 1:
输入:[2,1,2]
输出:5
示例 2:
输入:[1,2,1]
输出:0
示例 3:
输入:[3,2,3,4]
输出:10
示例 4:
输入:[3,6,2,3]
输出:8
提示:
3 <= A.length <= 10000
1 <= A[i] <= 10^6
class Solution {
public int largestPerimeter(int[] A) {
Arrays.sort(A);
for(int i=A.length-1;i>=2;i--){
int s1=A[i];
int s2=A[i-1];
int s3=A[i-2];
if(s1<s2+s3){
return s1+s2+s3;
}
}
return 0;
}
}
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
ArrayList<Integer> list=new ArrayList<>();
HashSet<Integer> set=new HashSet<>();
for(int i=0;i<nums1.length;i++){
set.add(nums1[i]);
}
for(int i=0;i<nums2.length;i++){
if(set.contains(nums2[i])){
list.add(nums2[i]);
set.remove(nums2[i]);
}
}
int [] str=new int [list.size()];
for(int i=0;i<list.size();i++){
str[i]=list.get(i);
}
return str;
}
}
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
ArrayList<Integer> set=new ArrayList<>();
ArrayList<Integer> res=new ArrayList<>();
for(int n:nums1){
set.add(n);
}
for(int n:nums2){
if(set.contains(n)){
res.add(n);
set.remove(Integer.valueOf(n));
}
}
int [] num=new int[res.size()];
int t=0;
for(int n:res){
num[t++]=n;
}
return num;
}
}