230. 二叉搜索树中第K小的元素
思路
- 将二叉树存为数组,通过前序遍历存为从小到大的有序数组
2.需要第几大的元素直接从排好序的数组中取
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @param {number} k
* @return {number}
*/
var kthSmallest = function(root, k) {
let arr = [];
getArr(root, arr);
return arr[k-1];
};
function getArr(root, arr) {
if(root === null) return;
getArr(root.left, arr);
arr.push(root.val);
getArr(root.right, arr);
}
整数反转
7. 整数反转
第一次解
- 从低位到高位放到栈中
3.从栈中取数,每次取都前一个*10再加当前的数,要判断是否溢出。
/**
* @param {number} x
* @return {number}
*/
const max = Math.pow(2, 31) - 1;
const min = -Math.pow(2, 31);
var reverse = function(x) {
let stack = [];
while(x) {
let pop = x%10;
stack.push(pop);
x = parseInt(x/10);
}
let len = stack.length;
let res = 0;
for(let i = 0; i < len; i++) {
if(res > 0 && res > parseInt((max-stack[i])/10)) return 0;
if(res < 0 && res < parseInt((min-stack[i])/10)) return 0;
res = res*10+stack[i];
}
return res;
};
第二次解:
不添加使用栈,而是直接将数据存进来
/**
* @param {number} x
* @return {number}
*/
const max = Math.pow(2, 31) - 1;
const min = -Math.pow(2, 31);
var reverse = function(x) {
let res = 0;
while(x) {
let pop = x%10;
x = parseInt(x/10);
if(res > 0 && res > parseInt((max-pop)/10)) return 0;
if(res < 0 && res < parseInt((min-pop)/10)) return 0;
res = res*10+pop;
}
return res;
};
网友评论