# Leetcode **Repository Path**: shine_rainbow/leetcode ## Basic Information - **Project Name**: Leetcode - **Description**: Leetcode 刷题笔记. - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-06-15 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LeetCode刷题目录 ### 1. 两数之和 >给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 // // 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 >// 示例 1:
//输入:nums = [2,7,11,15], target = 9
//输出:[0,1]
//解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 > // 示例 2:
//输入:nums = [3,2,4], target = 6
//输出:[1,2]
> // 示例 3:
//输入:nums = [3,3], target = 6
//输出:[0,1]
#### 解题思路 - 暴力法,在数组中遍历各个元素,判断数组中的两个元素匹配之和是否与target相同 ``` java public static int[] twoSum(int[] nums, int target) { for(int i=0;i map = new HashMap<>(); for(int i=0;i给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 #### 解题思路 - 暴力法,使用StringBuilder将输入的数字转换为String,倒序获取每一个元素。 - 注意:溢出情况及负数. ```java class Solution { public static int reverse(int x) { if(x == 0){ return 0; } StringBuilder stringBuilder = new StringBuilder(); if(x>0){ char[] chars = String.valueOf(x).toCharArray(); for(int i= chars.length-1;i>=0;i--){ stringBuilder.append(chars[i]).toString(); } Long value = Long.valueOf(stringBuilder.toString()); Integer maxValue = Integer.MAX_VALUE; if(value.compareTo(maxValue.longValue())>=0){ return 0; }else { return value.intValue(); } }else{ char[] chars = String.valueOf(x).substring(1).toCharArray(); for(int i= chars.length-1;i>=0;i--){ stringBuilder.append(chars[i]); } Long value = Long.valueOf(stringBuilder.toString()); Integer maxValue = Integer.MAX_VALUE; if(value.compareTo(maxValue.longValue())>=0){ return 0; }else { return Integer.valueOf(new StringBuilder("-").append(value).toString()); } } } } //runtime:4 ms //memory:35.9 MB ``` - 使用取余,逐个获取每一位的元素.注意溢出. 对于负数的情况,-reverse(-num). ```java class Solution { public static int reverse(int x){ //防止-reverse(-x)出错 if(x == Integer.MIN_VALUE){ return 0; } if(x<0){ return -reverse(-x); } int res = 0; while (x!=0){ if(res > 214748364){ return 0; } int temp = x % 10; res = res * 10 + temp; x = x/10; } return res ; } } //runtime:1 ms //memory:35.6 MB ``` ### 9.回文数 >给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 #### 解题思路 - 直接判断法.
对回文数使用双端指针的方式,同时进行取值对比. ```java class Solution { public static boolean isPalindrome(int x) { String numStr = String.valueOf(x); //如果负数,直接输出false if("-".equals(numStr.substring(0,1))){ return false; } char[] chars = numStr.toCharArray(); int leftIndex = 0; int rightIndex = chars.length-1; while (leftIndex