码迷,mamicode.com
首页 > 其他好文 > 详细

刷题49(力扣3道题)

时间:2020-03-20 21:58:37      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:二叉搜索树   节点   算法   tree node   描述   二叉树   this   leetcode   slice   

84.最小的k个数

题目链接

https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/

题目描述

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。

示例 1:

输入:arr = [3,2,1], k = 2
输出:[1,2] 或者 [2,1]

示例 2:

输入:arr = [0,1,2,1], k = 1
输出:[0]

重难点

写sort数值排序

题目分析

  1. 写sort数值从小到大排序;
  2. 根据k输出数组前k个数,就是最小的 k 个数。
/**
 * @param {number[]} arr
 * @param {number} k
 * @return {number[]}
 */
var getLeastNumbers = function(arr, k) {
    arr.sort(function(a,b){
        return a-b;
    });
    let res = [];
    for(let i=0;i<k;i++){
        res.push(arr[i]);
    }
    return res;
};

85.面试题17. 打印从1到最大的n位数

题目链接

https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/

题目描述

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

示例 1:

输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]

 

说明:

  • 用返回一个整数列表来代替打印
  • n 为正整数

重难点

根据n输出最小的n+1位数。

题目分析

  1. 根据n确定最小的n+1位数:Math.pow(10,n);
  2. 输出从1到最小的n+1位数(不包括最小的n+1位数),就从 1 到最大的 n 位数。
/**
 * @param {number} n
 * @return {number[]}
 */
var printNumbers = function(n) {
    let len = Math.pow(10,n);
    let res = [];
    for(let i=1;i<len;i++){
        res.push(i);
    }
    return res;
};

86.面试题 04.02. 最小高度树

题目链接

https://leetcode-cn.com/problems/minimum-height-tree-lcci/

题目描述

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

0
/ \
-3 9
/ /
-10 5

重难点

二叉搜索树:左子树所有节点的值小于根节点,右子树所有节点的值大于根节点,且左、右子树均为二叉搜索树。
大于根节点。

题目分析

  1. 如果数组为空,返回null;
  2. 由于数组是有序数组,找到数组索引1/2的位置,就是数组中间值,即为根节点;
  3. 以数组中间值为根节点建立二叉树;
  4. 左子树的值是小于中间值的数;
  5. 右子树的值是大于中间值的数;
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {number[]} nums
 * @return {TreeNode}
 */
var sortedArrayToBST = function(nums) {
    let len  = nums.length;
    if(len === 0){
        return null;
    }
    let mid = parseInt(len/2);
    let root = new TreeNode(nums[mid]);
    root.left = sortedArrayToBST(nums.slice(0, mid));
    root.right =sortedArrayToBST(nums.slice(mid+1));
    return root;
};

  

刷题49(力扣3道题)

标签:二叉搜索树   节点   算法   tree node   描述   二叉树   this   leetcode   slice   

原文地址:https://www.cnblogs.com/liu-xin1995/p/12535038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!