随笔分类 - 算法
记录日常遇到的值得记录的算法题
摘要:二叉搜索树的最近公共祖先 对于二叉搜索树,设两个节点的最近公共祖先为节点X,那么必有X的值介于两个节点的值之间,而且仅有一个节点满足条件。 基于这个条件,我们可以从根节点开始往下查找,思路就和二叉搜索树查找节点的思路类似。如果当前节点值比两个节点都大,则进入左子树,如果当前节点值比两个节点都小,则进
阅读全文
摘要:LRU概述 LRU算法,即最近最少使用算法。其使用场景非常广泛,像我们日常用的手机的后台应用展示,软件的复制粘贴板等。 本文将基于算法思想手写一个具有LRU算法功能的Java工具类。 结构设计 在插入数据时,需要能快速判断是否已有相同数据。为实现该目的,可以使用hash表结构。 同时根据LRU的规则
阅读全文
摘要:Description 给定数组arr和整数num,求arr的连续子数组中满足:其最大值减去最小值的结果大于num的个数。请实现一个时间复杂度为O(length(arr))的算法。 Input 输入第一行为测试用例个数。每一个用例有若干行,第一行为数组,每一个数用空格隔开,第二行为num。 Outp
阅读全文
摘要:Description 给定一个整型数组arr和一个大小为w的窗口,窗口从数组最左边滑动到最右边,每次向右滑动一个位置,求出每一次滑动时窗口内最大元素的和。 Input 输入第一行为用例个数, 每个测试用例输入的第一行为数组,每一个元素使用空格隔开;第二行为窗口大小。 Output 输出每个测试用例
阅读全文
摘要:Description Given a square grid of size n, each cell of which contains integer cost which represents a cost to traverse through that cell, we need to
阅读全文
摘要:Description Rahul and Ankit are the only two waiters in Royal Restaurant. Today, the restaurant received N orders. The amount of tips may differ when
阅读全文
摘要:Description Mike is a lawyer with the gift of photographic memory. He is so good with it that he can tell you all the numbers on a sheet of paper by h
阅读全文
摘要:最近看hashmap源码时,发现给定初始capacity计算threshold的过程很巧妙。 1 static final int tableSizeFor(int cap) { 2 int n = cap - 1; 3 n |= n >>> 1; 4 n |= n >>> 2; 5 n |= n
阅读全文
摘要:Description 给定一个矩形区域,每一个位置上都是1或0,求该矩阵中每一个位置上都是1的最大子矩形区域中的1的个数。 Input 输入第一行为测试用例个数。每一个用例有若干行,第一行为矩阵行数n和列数m,下面的n行每一行是用空格隔开的0或1。 Output 输出一个数值。 Sample In
阅读全文
摘要:Description 给定两个字符串,返回两个字符串的最长公共子序列(不是最长公共子字符串),可能是多个。 Input 输入第一行为用例个数, 每个测试用例输入为两行,一行一个字符串 Output 如果没有公共子序列,不输出,如果有多个则分为多行,按字典序排序。 Sample Input 1 1
阅读全文
摘要:问题描述: 在平面上有点 p1(x1,y1),p2(x2,y2),……,pn(xn,yn)包含于集合S。找出S中距离(一般是欧氏距离)最近的点对。最近点对可能不止一对。 问题分析: 该问题比较简单直观的做法是穷举法,直接两层循环计算所有的点对之间的距离,并用map存储点对的距离,同时找到最小距离。最
阅读全文
摘要:该类问题通用描述: 有n个物体,每个物体都有一个权值V[i],现在将n个物体连续分成m个部分,m个部分有一个部分会拿到最多的权值v。求所有分配方式中最小的v。 典型题目: 分发书本,宠物屋涂色等。 问题分析: 为便于问题理解,将n个物品权值当成物体体积V,每个物体体积V[i]。分成m个部分表示用m个
阅读全文

浙公网安备 33010602011771号