每日算法之数组中只出现一次的两个数字
JZ56 数组中只出现一次的两个数字 题目 一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字 思路 算法实现 既然有两个数字只出现了一次,我们就统计每个数字的出现次数,利用哈希表的快速根据key值访问其频率值。 具体做法: step 1:遍历数组,用哈 ...
每日算法之二叉搜索树的第k个节点
JZ54二叉搜索树的第k个节点 题目 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。 返回第k小的节点值即可 不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 保证n个节点的值不一样 思路 算法实现 根据二叉搜索树的性质,左子树的元素都小于根节 ...
每日算法之数组中的逆序对
JZ51 数组中的逆序对 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 方法1:暴力 思路 算法实现 两个for循环,如果前面的 ...
每日算法之丑数
JZ49 丑数 题目 我们先看到题目,把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。 方法1:质因数分解(暴力) 思路 算法实现 一个很朴素的做法 从1~n每次+1,一直枚举,直到找到地N个丑数为 ...
每日算法之最长不含重复字符的子字符串
JZ48 最长不含重复字符的子字符串 描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例1 输入:"abcabcbb" 返回值:3 说明:因为无重复字符的最长子串是"abc",所以其长度为 3。 方法1 思路 维护一个数组,想里面添加元素,直至出现第一个重复元 ...
每日算法之礼物的最大价值
JZ47 礼物的最大价值 描述 描述 在一个m\times nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 如 ...
【JVM】三色标记算法
本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 转载请在文首注明出处,如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境! 三色标记算法 可达性分析算法理论上要求全过程都基于一个能保障一致性的 ...
每日算法之把数字翻译成字符串
JZ46 把数字翻译成字符串 描述 有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。 现在给一串数字,返回有多少种可能的译码结果 示例1 输入: "12" 返回值:2 说明: 2种可能的译码结果(”ab” 或”l”) 思路 思路: 对于普通数组1-9,译码方 ...
每日算法之把数组排成最小的数
JZ45 把数组排成最小的数 描述 输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。 1.输出结果可能非常大,所以你需要返回一个字符串而不是整数 2.拼接 ...
每日算法之整数中1出现的次数(从1到n整数中1出现的次数)
JZ43 整数中1出现的次数(从1到n整数中1出现的次数) 描述 输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数 例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次 思路:暴力统计法 遍历1到n的每个数字,然后对每个数 ...
每日算法之字符串的排列
JZ38 字符串的排列 描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 题目主要信息 给定一个长度为n的字符串,求其中所有字符 ...
每日算法之二叉搜索树与双向链表
JZ36 二叉搜索树与双向链表 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表 注意: 1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继 2.返回链表中的第一个节点的指针 3.函数返回的TreeNo ...