9. 回文数
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
思路:这道题有两种解法。1.转换为字符串,然后判断前后字符串是否相等。2.利用算法让数字变量反转。
我的解法是第一种:
class Solution { public boolean isPalindrome(int x) { Integer a=new Integer(x); String b=a.toString(); int n=b.length(); boolean re=true; for(int i=0;i<b.length();i++){ //截取字符串进行判断 if(b.substring(i,i+1).equals(b.substring(n-i-1,n-i))){ }else{ re=false; } } return re; } }
2.其他大佬的解法
class Solution { public boolean isPalindrome(int x) { //如果x为负数或个位数为0的数一定不是回文数 if(x<0||(x>0&&x%10==0)){ return false; } int reverseNum=0; //当x小于或等于reverseNum时,反转完成 while (x>reverseNum){ reverseNum=reverseNum*10+x%10; x/=10; } //reverseNum%10==x考虑的是奇数的情况,reverseNum取多了一位,需要去掉再比较 return reverseNum==x||reverseNum/10==x; } }
453. 最小移动次数使数组元素相等
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使 n - 1 个元素增加 1。
示例:
输入:
[1,2,3]
输出:
3
解释:
只需要3次移动(注意每次移动会增加两个元素的值):
[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
思路:这道题我没有做出来。看了大佬的方法才做来的
每次使n-1个元素+1 完全等效于 每次使1个元素-1然后所有元素+1
所以只需找出:每次让1个元素-1,多少次后所有元素相等
来自 题解:《一丝灵感的方法》 作者:candy-12
class Solution { public int minMoves(int[] nums) { Arrays.sort(nums); int s = 0; for (int i = 0; i < nums.length; i++) { s += nums[i] - nums[0]; } return s; } } 作者:candy-12 链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/solution/yi-si-ling-gan-de-fang-fa-by-candy-12/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。