
leetcode
小萨摩
这个作者很懒,什么都没留下…
展开
-
leetcode 单词搜索 dfs
79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 wor...原创 2019-01-21 12:12:44 · 224 阅读 · 2 评论 -
leetcode 数组中的第K个最大元素
题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。思路:...原创 2019-02-20 12:04:49 · 266 阅读 · 0 评论 -
leetcode 用栈实现队列
这题以前写过,不过效率很低,看过剑指offer后突然发现用两个栈实现如此简单:这里简单记录下,想看详细的可以参考剑指offer。现在假设有三个元素:{a,b,c}插入:直接插入stack1。此时stack1有{a,b,c},stack2为空。抛出:由于之前是直接插入stack1,队列是先进先出,所有最先被抛出的应该是a,而a在stack1中的最栈部,不能直接抛出,此时借助stack...原创 2019-01-30 17:34:58 · 268 阅读 · 0 评论 -
leetcode 添加与搜索单词 - 数据结构设计
用单词查找树,实现方法有很多,但是看了算法第4版的实现发现代码真的简洁强大。可以先看这篇文章:单词查找树这里搜索单词只需要判断true或false,不需要全部匹配,稍稍修改了下。class WordDictionary { private Node root; private static int R = 26; static cl...原创 2019-02-21 16:34:48 · 253 阅读 · 0 评论 -
leetcode 超级次方
你的任务是计算 a^b 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入: a = 2, b = [3]输出: 8示例 2:输入: a = 2, b = [1,0]输出: 1024由于b是数组,可以对数组的每个数进行运算。例如:模运算: (a + b) % n = (a % n + b % n) % n ...原创 2019-02-05 12:24:26 · 429 阅读 · 1 评论 -
剑指offer 数值的整数次方 leetcode Pow(x, n) (快速幂)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。公式:当n为负数,注意需要特殊数据:底数为0且指数为负数的情况。复杂度为O(lgn)。代码实现:public class Solution { public double myPow(double x, int n) { if (Double.compare(x, 0) == 0 &am...原创 2019-02-05 11:39:28 · 251 阅读 · 0 评论 -
leetcode 实现 Trie (前缀树) (单词查找树)
208. 实现 Trie (前缀树)题目描述实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 ...原创 2019-01-23 13:44:55 · 498 阅读 · 0 评论 -
二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。一个基本的思路:先判断二进制最右边一位是不是1,然后把整数右移一位,知道整数变为0。代码: public int NumberOf1(int n) { int count = 0; while (n != 0) { if ((n & 1) =...原创 2019-02-02 13:14:58 · 147 阅读 · 0 评论 -
leetcode 链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 这题主要记录下快慢指针法,当用慢指针 slow 遍历列表时,让另一个指针 fast 的速度是它的两倍。当 fast 到达列表的末尾时,slow 必然位于中间。 public ListNode middleNode(ListNode head) { int l...原创 2019-01-31 13:39:08 · 199 阅读 · 1 评论 -
leetcode 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4要求时间复杂度为O(n)。如果可以使用额外空间,最简单的就是用HashMap。键对应...原创 2019-03-03 13:37:14 · 195 阅读 · 0 评论