备战蓝桥杯14弹

第一题

class Solution {
    public int majorityElement(int[] nums) {
         Arrays.sort(nums);
		        int n=nums.length;
		        int num=0;
		        for(int i=0;in/2){
		                           num=nums[i];
		                           
		                        }
		                    }

		                     j++;
		                }
		            } 

        return num;
    }
}      
    

备战蓝桥杯14弹_第1张图片

思路:遍历数组的每一个元素,然后将所有元素与此元素对比,如果相等,count加一,当count大于n/2时,返回此元素。重复元素所得的count值是相等的,所以不用考虑重复带来的影响。

第二题

class Solution {
    public int findPairs(int[] nums, int k) {
        int count=0;
        Arrays.sort(nums);
        for(int i=0;i

备战蓝桥杯14弹_第2张图片

思路:首先将数组排序,遍历两次数组,当i=0,并且i!=j时,比较nums[i]-nums[j]==k是否成立,成立的话count加1。当i!=0,nums[i]!=nums[i-1]时,j==0||nums[j]!=nums[j-1]成立时,再次判断。但是还是有些漏洞,当k==0时,nums[j]!=nums[j+1]||j==nums.length-1满足时再进行判断。

第三题

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int count=0;
        for(int a=1;a<2019/2;a++){
          
          for(int b=a+1;b<2019;b++){
            int c=2019-a-b;
            if((ab)){
              if(isF(a)&&isF(b)&&isF(c)){
                  count++;
              }
            }
        
          }
        }
        System.out.println(count);
        scan.close();
    }
    public static boolean isF(int n){
      int x=n;

      while(x>0){
        if(x%10==2||x%10==4){
          return false;
        }
        x=x/10;
      }
   return true;
        
    }
}

备战蓝桥杯14弹_第3张图片

思路:写双层循环,得出a,b两个加数,再用2019-a-b得到第三个加数c,为了保证三个数只有一种排列,令a

你可能感兴趣的:(蓝桥杯,算法,leetcode)