leetcode

Leetcode--139. 单词拆分

℡╲_俬逩灬. 提交于 2019-12-16 20:27:07
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。 示例 2: 输入: s = "applepenapple", wordDict = ["apple", "pen"] 输出: true 解释: 返回 true 因为 "applepenapple" 可以被拆分成 "apple pen apple"。 注意你可以重复使用字典中的单词。 示例 3: 输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"] 输出: false 思路:动态规划 dp[i]表示从头开始以i结尾的子字符串是否在字典中 提交的代码: class Solution { public boolean wordBreak(String s, List<String> wordDict) { Set<String> set=new HashSet(wordDict);

如何提升你的数据结构、算法以及解决问题的能力

雨燕双飞 提交于 2019-12-16 15:05:37
如何提升你的数据结构、算法以及解决问题的能力 这篇文章借鉴了我过去在学校一个学期的个人经历和挑战,当我进入学校的时候,我对任何 DSA(数据结构和算法)和解决问题的策略几乎一无所知。作为一名自学成才的程序员,我对一般编程会更加熟悉和舒适,例如面向对象编程,而不是 DSA 问题所需要的解决问题的能力。 这篇文章反映了我整个学期的经历,并包含了为了快速提高数据结构、算法和解决问题的能力而求助的资源。 面临问题:你知道原理,但是你被实际应用卡住了 我在学期初期的时候遇到这个问题,当时我不明白我哪里不懂,这是一个特别严重的问题。我对这个理论很了解,例如,什么是链表,它是如何工作的,它的各种操作和时间复杂度,它支持的 ADT(抽象数据类型),以及如何实现 ADT 操作。 但是,由于我不明白我哪里不懂,所以我无法确定我对它的理解和在实际应用中解决问题的差距。 不同类型的问题 一个数据结构问题的例子:描述如何在链表中插入一个节点并说明时间复杂度。 这是一个算法问题:在旋转数组中查找元素并说明时间复杂度。 最后是解决问题的疑虑,我认为比之前两个问题的级别更高,这可能需要简要描述一个场景,并且列出问题的要求。在考试中,可能会要求你对解决方案进行描述。在编程比赛中,可能会要求你在不明确提供任何的数据结构和算法的情况下提交可运行的代码。换句话说

leetcode刷题,没想到这么难搞!

安稳与你 提交于 2019-12-16 14:55:57
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> leetcode之前提交的代码不见了,所以在这里记一下 https://leetcode.com/problems/longest-substring-without-repeating-characters/ class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ rtv = start = current = 0 last_seen = {} while current < len(s): char = s[current] if char in last_seen: start = max(start, last_seen[char] + 1) if current - start + 1 > rtv: rtv = current - start + 1 last_seen[char] = current current += 1 return rtv 来源: oschina 链接: https://my.oschina.net/u/273719/blog/758263

Longest Substring Without Repeating Characters

空扰寡人 提交于 2019-12-16 14:55:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1. https://oj.leetcode.com/problems/longest-substring-without-repeating-characters/ 思路:利用一个exist数组保存字符是否出现(假设char set是ascii),从前向后遍历数组,如果遇到已存在的字符,应该回退到这个字符上次出现的下一个位置从新开始统计(如下图),同时注意exist数组的同步更新。 public class Solution { public int lengthOfLongestSubstring(String s) { if (s == null || s.length() == 0) return

LeetCode 003. Longest Substring Without Repeating

五迷三道 提交于 2019-12-16 14:49:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1. 看错题了,题目要求找出字符串中 的一个最长的子串,使得这个子串不包含重复的字符,这个子串的长度。看成了找出一个最长重复子串,它不包含重复的字符。题目给的两个例子也恰好符合我的臆想,想想也是醉了。 写了一些臆想的代码: unordered_set<char> tmp; bool is_unique(string& s) { tmp.clear(); for(int i=0; i!= s.size(); ++i) { if(tmp.find(s[i]) != tmp.end()) return false; tmp.insert(s[i]); } return true; } class Solution

LeetCode--124--hard--BinaryTreeMaximumPathSum

和自甴很熟 提交于 2019-12-16 06:17:19
package com.app.main.LeetCode.tree; import com.app.main.LeetCode.base.TreeNode; import java.util.HashMap; import java.util.Map; /** * * 124 * * hard * * Given a non-empty binary tree, find the maximum path sum. * * https://leetcode.com/problems/binary-tree-maximum-path-sum/ * * For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root. * * Example 1: * * Input: [1,2,3] * * 1 * / \ * 2 3 * * Output: 6 * Example 2: * * Input: [-10

【LeetCode】8. 字符串转换整数 (atoi)

不羁岁月 提交于 2019-12-16 06:16:26
请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。 注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。 在任何情况下,若函数不能进行有效的转换时,请返回 0。 说明: 假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。 示例 1: 输入: "42" 输出: 42 示例 2: 输入: " -42" 输出: -42 解释: 第一个非空白字符为 '-', 它是一个负号。 我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。 示例 3: 输入: "4193 with words" 输出: 4193 解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。 示例 4: 输入

java从入门到放弃的知识

▼魔方 西西 提交于 2019-12-16 05:28:27
大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法。我会按照几个维度对项目进行分类,以便大家查阅。当然,如果你觉得不错的话,欢迎给本项目点个 Star。我会用我的业余时间持续完善这份名单,谢谢🙏。 欢迎大家推荐自己觉得不错的 Java 项目,下面项目的排序很大程度是根据当前项目的 Star 数量。 教程 Java JavaGuide :【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。 CS-Notes :技术面试必备基础知识、Leetcode 题解、后端面试、Java 面试、春招、秋招、操作系统、计算机网络、系统设计。 advanced-java :互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。 architect-awesome :后端架构师技术图谱。 toBeTopJavaer :Java工程师成神之路 。 tutorials :该项目是一系列小而专注的教程 - 每个教程都涵盖 Java 生态系统中单一且定义明确的开发领域。 当然,它们的重点是 Spring Framework - Spring,Spring Boot 和 Spring

LeetCode第31题:下一个排列

僤鯓⒐⒋嵵緔 提交于 2019-12-16 01:58:34
LeetCode第31题:下一个排列 题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。 解法一:生病了,先写到这吧。有了点想法,有时间再改 class Solution { public void nextPermutation ( int [ ] nums ) { int len = nums . length ; int ay [ ] = new int [ len ] ; int R = len - 1 , L = R - 1 ; while ( L >= 0 ) { if ( nums [ L ] > nums [ R ] ) { if ( R == 1 ) { Arrays . sort ( nums ) ; break ; } L -- ; } else { int a = nums [ L ] ; nums [ L ] = nums [ R ] ; nums [ R ] = a ; if ( ( len == 3 ) || len == 2 ) { break ; } if ( len == 3 && L == 0 ) { a = nums [ 1 ] ; nums [ 1 ] = nums [ 2 ] ; nums

LeetCode:Same Tree

[亡魂溺海] 提交于 2019-12-15 20:29:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、题目名称 Same Tree(判断两棵树是否相等) 2、题目地址 https://leetcode.com/problems/same-tree/ 3、题目内容 英文:Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. 中文:给定两颗二叉树,写一个函数判断这两棵树是否相等。如果两棵树的结构和各节点中保存的值是相等的,则认为这两棵树相等。 4、解题方法 本题可以采用先根遍历的方法,从上到下递归考察各节点。在任意一对节点的比较中,如果左右枝是否为空的属性和节点中的val值不相等,则认为两棵树不是同一棵树,否则继续考察。如果遍历结束后仍然不能证明这两棵树不是同一棵树,则这两棵树就是相等的 解决问题的Java代码如下: /** * 功能说明:LeetCode 100 - Same Tree * 开发人员:Tsybius2014 * 开发时间:2015年8月12日 */ public class