力扣-每日一道算法题(java)


力扣官方网站:https://leetcode-cn.com/

持续更新中…


两数之和

import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int nums[] = {4,2,2,1,9,1,2};
        int[] result = twoSum(nums,6);
        System.out.println(Arrays.toString(result));
    }

    public static int[] twoSum(int[] nums, int target) {
        int i,j;
        for(i=0;i<nums.length;i++){
            for(j=0;j<nums.length;j++){
                if(i == j ){
                    continue;
                }
                if(nums[i]+nums[j]==target){
                    return new int[] {i,j};
                }
            }
        }
        return nums;
    }
}

在这里插入图片描述

猜数字

public class test {
    public static void main(String[] args) {
       int  answer[] = {2,2,3};
       int guess[] = {3,2,1};
        System.out.println(game(answer,guess));
    }
    public static int game(int[] guess, int[] answer) {
        int number=0;
        int i;
        for(i = 0;i<guess.length;i++){
            if(guess[i] == answer[i]){
                number++;
            }
        }
        return number;
    }

}

在这里插入图片描述

加一

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test {
    public static void main(String[] args) {
        int digits[] = {8,9,9} ;
        //System.out.println(12%10);
        int [] result = plusOne(digits);
        System.out.println(Arrays.toString(result));
    }
    public static int[] plusOne(int[] digits) {

        for(int i=digits.length-1;i>=0;i--){
            digits[i]++;
            if(digits[i]%10!=0){
                return  digits;
            }else {
                digits[i]=0;
            }
        }
        digits=new int[digits.length+1];
        digits[0]=1;
        return digits;
    }
}

在这里插入图片描述

拿硬币

public class test {
    public static void main(String[] args) {
        int[] arr = {10,3,2,1};
        System.out.println(minCount(arr));
    }
    public static int minCount(int[] coins) {
        int number =0;
        for(int i =0;i<coins.length;i++) {
            while (true) {
                if(coins[i]<=0){
                    break;
                }
                if (coins[i] > 0) {
                    if (coins[i] == 1) {
                        coins[i]--;
                        number++;
                    } else {
                        coins[i] -= 2;
                        number++;
                    }
                }

            }
        }
        return number;
        }

    }

在这里插入图片描述

统计位数为偶数的数字

public class test {
    public static void main(String[] args) {
        int[] arr = {11, 23, 23};
        System.out.println(findNumbers(arr));
    }

    public static int findNumbers(int[] nums) {
        int len = 0;
        for(int i =0;i<nums.length;i++){
            if((""+nums[i]).length()%2 == 0 )len++;
        }
        return len;
    }


}

在这里插入图片描述

有多少小于当前数字的数字

import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        int[] arr = {11, 23, 23};
        System.out.println(Arrays.toString(smallerNumbersThanCurrent(arr)));
    }

    public static int[] smallerNumbersThanCurrent(int[] nums) {
        int arr1[] =  new int[nums.length];

        for(int i =0;i< nums.length;i++){
            for(int j =0;j< nums.length;j++){
                if (nums[i] >nums[j] && nums[i] != nums[j]){
                    arr1[i]++;
                }
            }

        }
        return arr1;
    }


}

在这里插入图片描述

斐波那契数列

public class test {
    public static void main(String[] args) {
        System.out.println(fib(46));
    }

    public static int fib(int n) {

        int arr[] = new int[n];

        switch (n){
            case 0:
                return 0;
            case 1:
                return 1;
            case 2:
                return 1;
        }
        arr[0]=1;
        arr[1]=1;

        for(int i = 2 ; i<n ;i++){

            arr[i] = arr[i-1]+arr[i-2];
            if(arr[i]>=1000000007) {
                arr[i]%=1000000007;
            }

        }

        return arr[arr.length-1];
    }


}

在这里插入图片描述

打印从1到最大的n位数

在这里插入图片描述

import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(printNumbers(1)));
    }

    public static int[] printNumbers(int n) {
        int end = (int)Math.pow(10, n);
        int arr[] = new int[end-1];
        for(int i=1; i<end;i++){
            arr[i-1] = i;
        }

        return arr;
    }
}

在这里插入图片描述

转换成小写字母

在这里插入图片描述

public String toLowerCase(String str) {
        return str.toLowerCase();
    }

在这里插入图片描述

替换空格

在这里插入图片描述

public String replaceSpace(String s) {
            return s.replace(" ","%20");
    }

在这里插入图片描述

唯一摩尔斯密码词

在这里插入图片描述

import java.util.*;

public class test {
    public static void main(String[] args) {

        String words[] ={"noilq","kzlq","ydreq","ybxk","kzlq"};


        System.out.println( uniqueMorseRepresentations(words));

    }

        public static int uniqueMorseRepresentations(String[] words) {
        
            String encode[] ={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};

            char docode[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

            String arr[] = new String[words.length];
            for(int i = 0;i<words.length;i++){
                char[] caifen = words[i].toCharArray();
                for (int j= 0;j<caifen.length;j++){


                    for (int k = 0;k<docode.length;k++){
                        if (docode[k] == caifen[j]){
                            if(arr[i] == null){
                                arr[i] = encode[k];
                                break;
                            }else{
                                arr[i] += encode[k];
                                break;
                            }

                        }
                    }


                }

                }


            //去重
            List<String> result = new ArrayList<>();
            boolean flag;
            for(int i=0;i<arr.length;i++){
                flag = false;
                for(int j=0;j<result.size();j++){
                    if(arr[i].equals(result.get(j))){
                        flag = true;
                        break;
                    }
                }
                if(!flag){
                    result.add(arr[i]);
                }
            }
            String[] arrayResult = (String[]) result.toArray(new String[result.size()]);

            int number = arrayResult.length;
            return number;
        }


}

数组中两元素的最大乘积

在这里插入图片描述

public class test {
    public static void main(String[] args) {
        int nums[] = {3,4,5,2};
        System.out.println(maxProduct(nums));

    }

    public static int maxProduct(int[] nums) {
        
        int a =0;
        int max_num = 0;

        for (int i = 0;i<nums.length;i++){
            if (max_num<nums[i]){
                a=i;
                max_num = nums[i];
            }
        }

        //删除最大的元素
        int new_nums[] = new int[nums.length-1];
        for(int i=0;i<new_nums.length; i++) {
            // 判断元素是否越界
            if (a < 0 || a >= nums.length) {
                throw new RuntimeException("元素越界... ");
            }
            //
            if(i<a) {
                new_nums[i] = nums[i];
            }
            else {
                new_nums[i] = nums[i+1];
            }
        }

        int b = 0;
        max_num = 0;
        for (int i = 0;i<new_nums.length;i++){
            if (max_num<new_nums[i]){
                b=i;
                max_num = new_nums[i];
            }
        }
        return (nums[a]-1)*(new_nums[b]-1);
    }


}

剑指 Offer 58 - II. 左旋转字符串

在这里插入图片描述

public class test {
    public static void main(String[] args) {
        String s = "lrloseumgh";int k = 6;

        System.out.println(reverseLeftWords(s,k));
    }

    public static String reverseLeftWords(String s, int n) {
    String a = "";

    for (int i = n ; i<=s.length()-1;i++){
        a += s.charAt(i);
    }

    for (int i = 0 ; i<n;i++){
        a += s.charAt(i);
    }
    return a;
    }


}

在这里插入图片描述

整数反转

这题还是直接看官方的思路吧…我写得太菜了 。。。。

class Solution {
    public int reverse(int x) {
        	
		//判断是否大于0
		if(x >0) {
			StringBuilder s = new StringBuilder(""+x);
			//判断是否越界
			long y = Long.valueOf(s.reverse().toString());
			
			if(y >= 2147483648L) {
				return 0;
			}else {
				return (int)(y);
			}
			
		}else {
			x=x-x-x;
			
			if(x <= -2147483648L) {
				return 0;
			}
			
			StringBuilder s = new StringBuilder(""+x);
			
			
			
			//判断是否越界
			long y =  Long.valueOf(s.append("-").reverse().toString());
			if(y <= -2147483648L) {
				return 0;
			}else {
				return (int)(y);
			}
		}
    }
}

剑指 Offer 58 - I. 翻转单词顺序

class Solution {
    public String reverseWords(String s) {
        //分割字符串
	    	String[] strArr = s.split(" ");
	    	String xin = "";
	    	//反转
	    	for (int i = strArr.length-1; i >= 0; i--) {
	    		//判断是否是空格
	    		if(strArr[i].trim().isEmpty()) {
	    			continue;
	    		}
	    		
	    		
	    		
	    			xin +=strArr[i]+" ";

				
			}
	    	
	    	return xin.trim();
    }
}

557. 反转字符串中的单词 III

class Solution {
    public String reverseWords(String s) {
        String ss[] = s.split(" ");
        String ssss = "";

        for (int i = 0 ;i<ss.length;i++){
            ssss +=new StringBuilder(ss[i]).reverse().append(" ").toString();
        }

        return ssss.trim();
    }
}

剑指 Offer 11. 旋转数组的最小数字

int a = 2147483647;

            for (int i = 0;i<numbers.length;i++){
                if(numbers[i] <a){
                    a=numbers[i];
                }
            }

            return a;
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值