• Java练习 day1(LeetCode简单题15道)


    一、两数之和

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            for(int i = 0; i < nums.length; ++i){
                for(int j = i+1; j < nums.length; ++j){
                    if(nums[i] + nums[j] == target){
                        return new int[]{i, j};
                    }
                }
            }
        return new int[]{0, 0};
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二、回文数

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public boolean isPalindrome(int x) {
            if(x < 0 || (x % 10 == 0 && x != 0)){
                return false;
            }
            int reverseNumber = 0;
            while(x > reverseNumber){
                reverseNumber = reverseNumber * 10 + x % 10;
                x /= 10;
            }
            return reverseNumber / 10 == x || reverseNumber == x;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    三、罗马数字转整数

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        Map<Character, Integer> symbplValues = new HashMap<Character, Integer>(){
            {
                put('I', 1);
                put('V', 5);
                put('X', 10);
                put('L', 50);
                put('C', 100);
                put('D', 500);
                put('M', 1000);
            }
        };
        public int romanToInt(String s) {
            int res = 0;
            int n = s.length();
            for(int i = 0; i < n; ++i){
                int num = symbplValues.get(s.charAt(i));
                if(i == n - 1){
                    res += num;
                    continue;
                }
                int num1 = symbplValues.get(s.charAt(i+1));
                if(num1 > num){
                    res += (num1 - num);
                    ++i; 
                } else{
                    res += num;
                }
            }
        return res;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    四、最长公共前缀

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public String longestCommonPrefix(String[] strs) {
            if(strs == null || strs.length == 0){
                return "";
            }
            String res = new String();
            int max_length = 1000000;
            for(int i = 0; i < strs.length; ++i){
                max_length = Math.min(max_length, strs[i].length());
            }
            for(int i = 0; i < max_length; ++i){
                char ch = strs[0].charAt(i);
                for(int j = 1; j < strs.length; ++j){
                    if(strs[j].charAt(i) != ch){
                        return res;
                    }
                }
                res += ch;
            }
        return res;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    五、有效的括号

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public boolean isValid(String s) {
            int n = s.length();
            if((n & 1) == 1){
                return false;
            }
            Deque<Character> stack = new LinkedList<Character>();
            for(int i = 0; i < n; ++i){
                if(stack.isEmpty()){
                    stack.push(s.charAt(i));
                } else{
                    if((stack.peek() == '(' && s.charAt(i) == ')')
                    || (stack.peek() == '[' && s.charAt(i) == ']')
                    || (stack.peek() == '{' && s.charAt(i) == '}')
                    ){
                       stack.pop(); 
                    } else{
                        stack.push(s.charAt(i));
                    }
                }
            }
        return stack.isEmpty();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    六、合并两个有序链表

    1、题目链接

    点击跳转到题目位置

    2、代码

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
            if(list1 == null){
                return list2;
            } else if(list2 == null){
                return list1;
            } else if(list1.val < list2.val){
                list1.next = mergeTwoLists(list1.next, list2);
                return list1;
            } else{
                list2.next = mergeTwoLists(list2.next, list1);
                return list2;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    七、删除有序数组中的重复项

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int removeDuplicates(int[] nums) {
            int left = 0;
            int right = 0;
            int n = nums.length;
            while(right < n){
                while(right < n - 1 && nums[right] == nums[left]){
                    ++right;
                }
                if(right == n - 1 && nums[left] == nums[right]){
                    break;
                }
                ++left;
                nums[left] = nums[right];      
            }
        return left + 1;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    八、移除元素

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int removeElement(int[] nums, int val) {
            int left = 0;
            int right = 0;
            int n = nums.length;
            while(right < n){
                if(nums[right] == val){
                    ++right;
                    continue;
                } else{
                    nums[left] = nums[right];
                    ++left;
                    ++right;
                }
            }
        return left;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    九、找出字符串中第一个匹配项的下标

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int strStr(String haystack, String needle) {
            for(int i = 0; i < haystack.length(); ++i){
                int flag = 0;
                if(i + needle.length() > haystack.length()){
                    break;
                }
                for(int j = 0; j < needle.length(); ++j){
                    if(haystack.charAt(i + j) != needle.charAt(j)){
                        flag = -1;
                        break;
                    }
                }
                if(flag == 0){
                    return i;
                }
            }
        return -1;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    十、搜索插入位置

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int left = 0;
            int right = nums.length - 1;
            int ans = -1;
            while(left <= right){
                int mid = ((right - left) >> 1) + left;
                if(nums[mid] == target){
                    return mid;
                } else if(nums[mid] < target){
                    left = mid + 1; 
                } else{
                    ans = mid;
                    right = mid - 1;
                }
            }
            if(ans == -1){
                return nums.length;
            }
        return ans;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    十一、最后一个单词的长度

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int lengthOfLastWord(String s) {
            int len = 0;
            int flag = 0;
            for(int i = 0; i < s.length(); ++i){
                if(s.charAt(i) == ' '){
                    flag = 1;
                } else{
                    if(flag == 1){
                        len = 1;
                        flag = 0;
                    } else{
                        ++len;
                    }
                }
            }
        return len;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    十二、加一

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int[] plusOne(int[] digits) {
            int n = digits.length;
            for(int i = n - 1; i >= 0; --i){
                digits[i] = (digits[i] + 1) % 10;
                if(digits[i] != 0){
                    return digits;
                }
            }
            digits = new int[digits.length + 1];
            digits[0] = 1;
        return digits;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    十三、二进制求和

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public String addBinary(String a, String b) {
            StringBuffer ans = new StringBuffer();
            int i = a.length() - 1;
            int j = b.length() - 1;
            int carry = 0;
            while(i >= 0 && j >= 0){
                int num1 = a.charAt(i) - '0';
                int num2 = b.charAt(j) - '0';
                int num = (num1 + num2 + carry) % 2;
                carry = (num1 + num2 + carry) / 2;
                ans.append(num);
                --i;
                --j;
            }
            while(i >= 0){
                int num1 = a.charAt(i) - '0';
                int num = (num1 + carry) % 2;
                carry = (num1 + carry) / 2;
                ans.append(num);
                --i;
            }
            while(j >= 0){
                int num2 = b.charAt(j) - '0';
                int num = (num2 + carry) % 2;
                carry = (num2 + carry) / 2;
                ans.append(num);
                --j;
            }
            if(carry == 1){
                ans.append(1);
            }
            ans.reverse();
        return ans.toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    十四、x 的平方根

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int mySqrt(int x) {
            int left = 0;
            int right = x;
            int ans = -1;
            while(left <= right){
                int mid = ((right - left) >> 1) + left;
                long num = (long)mid * mid;
                if(num == x){
                    return mid;
                } else if(num < x){
                    ans = mid;
                    left = mid + 1;
                } else{
                    right = mid - 1;
                }
            }
        return ans;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    十五 爬楼梯

    1、题目链接

    点击跳转到题目位置

    2、代码

    class Solution {
        public int climbStairs(int n) {
            int []dp = new int[n+1];
            dp[0] = 1;
            dp[1] = 1;
            for(int i = 2; i <= n; ++i){
                dp[i] = dp[i-1] + dp[i-2];
            }
        return dp[n];
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    网络摄像头-流媒体服务器-视频流客户端
    照明灯具哪个品牌好?照明灯具十大排行榜
    看了 4K 经典中视频,我才知道 30 多年前的艺术家有多牛
    计算机毕业设计之java+ssm植物养护管理系统
    超市结算系统|Springboot+Vue通用超市结算收银系统
    Jmeter系列-阶梯加压线程组Stepping Thread Group详解(6)
    C# Socket通信从入门到精通(9)——如何设置本机Ip地址
    【Python3】初识Python及其基础知识
    CDN加速在目前网络安全里的重要性
    浏览器黑暗模式插件
  • 原文地址:https://blog.csdn.net/qq_56086076/article/details/133462264