1.最少移动次数使数组元素相等 II
public int minMoves2(int[] nums) {
Arrays.sort(nums);
int num=0;
int zhong=0;
int len=nums.length;
if(len==1){
return 0;
}
if(len==2){
return nums[1]-nums[0];
}
if(len%2==0 ){
zhong=(nums[len/2]+nums[(len/2)-1])/2;
}else{
zhong=nums[len/2];
}
for(int i=0;i<nums.length;i++){
if(nums[i]!=zhong){
num+=Math.abs(nums[i]-zhong);
}
}
return num;
}
-------------------------------------------------------------------------------------------------------
2.机器人大冒险
public static boolean robot(String command, int[][] obstacles, int x, int y) {
int shang=0;
int you=0;
int index=0;
char[] com=command.toCharArray();
if(command.length()<2 || command.length()>1000){
return false;
}
if(x<0||x>1e9 || y<0 || y>1e9){
return false;
}
if(obstacles.length<0||obstacles.length>1000){
return false;
}
for(int m=0;m<obstacles.length;m++)
{
if(obstacles[m][0]<=x&&obstacles[m][1]<=y)
{
obstacles[index][0]=obstacles[m][0];
obstacles[index][1]=obstacles[m][1];
index++;
}
}
while(shang>=0&& shang<=y &&you>=0 && you<=x ){
for(int i=0;i<com.length;i++){
if(shang ==y && you==x){
return true;
}
if (obstacles.length!=0){
for(int q=0;q<index;q++){
if(obstacles[q][0]==you && obstacles[q][1]==shang ){
return false;
}
}
}
switch(com[i]){
case 'U':
shang++;
continue;
case 'R':
you++;
continue;
}
}
}
return false;
}
-------------------------------------------------------------------------------------------------------
3.三数之和
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ans = new ArrayList();
int len = nums.length;
if(nums == null || len < 3) {
return ans;
}
Arrays.sort(nums); // 排序
for (int i = 0; i < len ; i++) {
if(nums[i] > 0) {
break; // 如果当前数字大于0,则三数之和一定大于0,所以结束循环
}
if(i > 0 && nums[i] == nums[i-1]) { // 去重
continue;
}
int L = i+1;
int R = len-1;
while(L < R){
int sum = nums[i] + nums[L] + nums[R];
if(sum == 0){
ans.add(Arrays.asList(nums[i],nums[L],nums[R]));
while (L<R && nums[L] == nums[L+1]) {
L++; // 去重
}
while (L<R && nums[R] == nums[R-1]) {
R--; // 去重
}
L++;
R--;
}
else if (sum < 0) {
L++;
}
else if (sum > 0) {
R--;
}
}
}
return ans;
}