铁锤的Blog 
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •     

LeetCode-Add and Search Word - Data structure design

LeetCode: Add and Search Word - Data structure design题目: 设计一个数据结构实现下面两个操作: void addWord(word) bool search(word) search(word)方法可以查找出添加的单词,并且单词中的(’.’)字符代表任意存在的字母。 例子: addWord("bad") addWord("dad") addWord("mad") search("pad") -> false search("bad") -> true search(".ad") -> true search("b..") -> true 思路: 这个题是一个设计数据结构的题,和trieNode那个题是类似的,需要一个这样的结构来根据字母树来查找单词。但是这里多了一个任意字符’.’,刚开始我改变了存储结构,按层来存储,这样看来就像一个单链表,但是这样其实
 2019-10-23   编程  算法    算法  Leetcode 

LeetCode-Implement Trie (Prefix Tree)

LeetCode: Implement Trie (Prefix Tree)题目: 实现一个tire的数据结构实现下面的操作: public void insert(String word) ; public boolean search(String word) ; public boolean startsWith(String prefix) ; search(word)方法可以查找出添加的单词,startsWith方法可以查找有没有以prefix为前缀的单词。 例子: Trie trie = new Trie(); trie.insert("apple"); trie.search("apple"); // returns true trie.search("app"); // returns false trie.startsWith("app"); // returns true trie.insert("app"); trie.search(&q
 2019-10-23   编程  算法    算法  Leetcode 

LeetCode-Word Search II

LeetCode: Word Search II题目: 给定一个二维字符数组和一个单词集合,找出所有在数组中的单词集合。每一个单词的字符必须在相邻的单元格中。 例子: Input: board = [ ['o','a','a','n'], ['e','t','a','e'], ['i','h','k','r'], ['i','f','l','v'] ] words = ["oath","pea","eat","rain"] Output: ["eat","oath"] 思路: 这个题本身已经不陌生了,一看就是要使用dfs的解法。但是肯定没有这么简单,因为这是一道hard的题,所以肯定对时间复杂
 2019-10-22   编程  算法    算法  Leetcode 

LeetCode-Restore IP Addresses

LeetCode: Restore IP Addresses题目: 给定一个由数字组成的字符串,求出改数字组成的串可以转化的所有合法ip集合。 例子: Input: "25525511135" Output: ["255.255.11.135", "255.255.111.35"] 思路: 首先合法的ip由四个数字组成并由3个(.) 进行分割,并且每个数字都大于0小于255。这个题也是一个典型的递归求解的问题,点的总数是确定的,只有3个,那么问题就是在哪里打点。然后再看其实第一次打点的位置只有3个,因为在第四个位置打点时就一定会大于255。所以问题就转换成找出第一个点的位置,然后再找子串的第一个点的位置,打够三个点结束。需要注意的是当串以0开始时,只能截取0。 class Solution { public List<String> restoreIpAddresses(String s) { if (null == s || s.length() < 4) {
 2019-10-18   编程  算法    算法  Leetcode 

LeetCode-Subsets II

LeetCode: Subsets II题目: 给定一个集合,找出该集合可能的所有子集,当前集合包含重复元素。 例子: Input: [1,2,2] Output: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 思路: 这个题和subsets的思路大致一样,就是当前的元素到底要不要,不同点在于是否如何把相同元素的不同组合去重。首先就是对所查找集合进行排序,排序完成后相同的元素就在相邻的位置了,然后在查找的过程中,如果相同的靠前元素还没使用,当前元素就不应该纳入。 class Solution { public List<List<Integer>> subsetsWithDup(int[] nums) { if (null == nums || nums.length == 0) { return new ArrayList<>(); } List<List<Integer>> res
 2019-10-18   编程  算法    算法  Leetcode 

SpringCloud系列(一)之Eureka

前言:时间久了发现自己的记性真的越来越差了,很多当时记得非常清楚的东西,隔了很长时间发现有印象是有印象,但是模模糊糊,提起来可能驴唇不对马嘴。因此觉得有些东西还是要落实,要输出,这样自己的印象才会深刻,所以从现在开始学习的东西都尝试着总结,以便以后忘记时也能回来看看迅速得回忆起这些知识,温故而知新。 1. Eureka简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。 概括一下就是Eureka是一种注册中心 2. Eureka架构 可以看到整个架构中有三种角色Eureka Server 、Service Consumer 、Service Provider。分别对应了注册中心,服务消费者,服务提供者。服务提供者将自己的信息注册到注册中心,并且可以更新和取消该注册。注册中心间同步服务提供者的信息。服务消费者通过注册中心找到服务提供者
 2019-10-17   编程  springCloud    springCloud 

LeetCode-Gray Code

LeetCode: Gray Code题目: 灰码的含义是两个连续的数字在二进制上只有一位不同。给一个正整数n,返回一个灰码集合,该集合必须以0开始。 例子: Input: 2 Output: [0,1,3,2] Explanation: 00 - 0 01 - 1 11 - 3 10 - 2 对于一个整数n,灰码的序列可能不是唯一的,如下. For example, [0,2,3,1] 也是一个合格的返回值. 00 - 0 10 - 2 11 - 3 01 - 1 思路: 这个题是在刷dfs系列题的时候遇到的,刚开始以为很简单,不就是每一位选1还是0的问题吗,但是事实不是这样。最后发现规律,每增加一位实际是增加了当前位和已有集合的倒序列的和。 n = 1 . 0 1 n = 2 . 00 01 | 11 10 n = 3 . 000 001 011 010 | 110 111 101 100 … class Solut
 2019-10-17   编程  算法    算法  Leetcode 

LeetCode-Word Search

LeetCode: Word Search题目: 给定一个二维字符数组和一个单词,找在字符数组中是否能够拼成当前单词。 例子: board = [ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E'] ] Given word = "ABCCED", return true. Given word = "SEE", return true. Given word = "ABCB", return false. 思路: 这个题很明显是一个dfs的题,找到开始位置然后分别找上下左右看能否拼成当前单词就可以判断当前结果,需要注意的是找的过程中不能再使用已经使用过的字符。 代码:DFS class Solution { public bool
 2019-10-16   编程  算法    算法  Leetcode 

LeetCode-Maximum Width of Binary Tree

LeetCode: Maximum Width of Binary Tree题目: 给定一个二叉树,求这个树的最大宽度。该宽度为两个非空节点间包含空节点的总结点数。 例子: Example 1: Input: 1 / \ 3 2 / \ \ 5 3 9 Output: 4 Explanation: 最大宽度是第三层,总共有四个节点 4 (5,3,null,9). Example 2: Input: 1 / 3 / \ 5 3 Output: 2 Explanation:最大宽度是第三层 总共有两个节点 2 (5,3). 思路: 这个题也是最直观的感受就是在考察树的广度遍历,但是因为没有深入思考过,所以在怎么区分每一层上陷入了卡克状态。看了提示发现可以通过队列的大小来确定当前层有多少个节点。知道这个后这个题的核心问题是怎么算两个节点
 2019-10-12   编程  算法    算法  Leetcode 

LeetCode-Generate Parentheses

LeetCode: Generate Parentheses题目: 给定一个数字n,写一个函数返回所有n对小括号的组合。 例子: For example, given n = 3, a solution set is: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 思路: 这个题也是明显的回溯的题,就是看当前选择哪个括号,但是需要注意的是左括号数一定要小于等于右括号数,当两种括号都使用完了就是一种解。 代码:class Solution { public List<String> generateParenthesis(int n) { if (n <= 0) { return new ArrayList<>(); } List<String> result = new ArrayL
 2019-09-27   编程  算法    算法  Leetcode 
1234…7

Search

Hexo Fluid
 总访问量 次   总访客数 人