个人简介

Echo Blog


江湖无名 安心练剑
  • 面试算法:如何找到数组中出现次数最多的元素?
    多数元素 题目 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:[3,2,3] 输出:3 示例 2: 输入:[2,2,1,1,1,2,2] 输出:2 进阶: 尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:数字 1 的个数
    题目 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例 1: 输入:n = 13 输出:6 示例 2: 输入:n = 0 输出:0 提示: 0 <= n <= 2 * 10^9 暴力法 思路 直接遍历所有的数字,统计 1 出现的次数。 java 实现 /** * 最基本的思路: * * 直接统计各个...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:只出现一次的数字详解汇总
    题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。 找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 解题思路 最简单的就是我们使用 HashMap 存储每一个数字...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:加油站难题,加油的学问还真不少
    题目 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。 说明:  如果题目有解,该答案即为唯一答案。 ...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:动态规划解三角形最短路径详解
    题目 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 示例 1: 输入:triangle = [[2],[3,4],[6,5...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:填充每个节点的下一个右侧节点指针汇总
    填充每个节点的下一个右侧节点指针 题目 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。 二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:二叉树展开为链表
    二叉树展开为链表 题目 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1: 输入:root = [1,2,5,3,4,null,6] 输出:...
    2020-01-23 02:09:32 | Data-Struct
  • 面试算法:二叉树路径之和问题汇总
    所有的路径 题目 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / 2 3 5 输出: [“1->2->5”, “1->3”] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思路 最直观的方法是使用深度优先搜索。 在深度优先...
    2020-01-23 02:09:32 | Data-Struct