回文数
给你一个整数x,如果x是一个回文整数,返回true;否则返回false。 回文数是指正序(从左向右)和倒叙(从右向左)读的都是一样的整数。
var isPalindrome=function (x){
let str=x.toString();//'12321'
let arr=str.split('')//['1','2','3','2','1']
let newArr=arr.reverse();
let newStr=newArr.join('');//'12321'
return x===Number(newStr)
};
console.log(isPalindrome(12321));//true
var isPalindrome=function (x){
let res=0
let current=x
while (current){
let last=current%10
current=Math.floor(current/10)
res= res*10+last
}
return res===x
}
console.log(isPalindrome(12321));
双指针
let str='yesey'
var isPalindrome=function (str){
let i=0
let j=str.length-1
while(i<=j){
if (str[i]===str[j]){
i++
j--
}else {
return false
}
}
return true
};
console.log(isPalindrome(str));
合并两个有序数组
给你两个按非递减顺序排列的整数数组nums1和nums2另有两个整数m和n,分别nums1和nums2中的元素数目。 请你合并nums2到nums1中,使得合并后的数组同样按照非递减顺序排列。 最终,合并后数组不应该由函数返回,而是存储在数组nums1中,为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应该合并的元素,后n个元素为0,应该忽略。nums2的长度为n。
let nums1 = [1, 2, 3, 0, 0, 0], m = 3, nums2 = [2, 5, 6], n = 3
var merge = function (num1, m, nums2, n) {
let i = m - 1;
let j = n - 1;
let k = m + n - 1
while (i >= 0 && j >= 0) {
//比较两根指针的值,取比较大的从nums1的尾部填补
if (nums1[i] >= nums2[j]) {
nums1[k] = nums1[i]
i--
k--
} else {
nums1[k] = nums2[j]
j--
k--
}
}
while (j >= 0) {
nums1[k] = nums2[j]
j--
k--
}
};
merge(nums1, m, nums2, n)
console.log(nums1);