编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
初始搜索位置设置在右上角
/**
* @param {number[][]} matrix
* @param {number} target
* @return {boolean}
*/
var searchMatrix = function(matr...
给你一个整数数组nums
,有一个大小为k
的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k
个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
说一下我的解法
首先第一个窗口的最大值和最大值的下标i,一个循环即可找出 窗口前移一个位置时,我们可以假设第一个窗口的最大值还在窗口范围内,那么只需要比较一下最大值和新进入窗口的这个值,会有两种情况
为什么需要维护坐标,因为随着窗口移动,之前的最大值可能被移出窗口,移出窗口的时候,我们...
原文 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。
这个题,我的思路是先遍历整棵树,给每个节点建立parent,同时找到pq两个节点
然后把p
q
两个节点的所有祖先存储到数组
从后向前遍历这两个数组,找到分叉的节点
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* t...
这个题,还是用我老办法。
先把链表改成数组,然后该怎么搞就怎么搞。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var isPalindrome = funct...