自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 [LeetCode] 795. Number of Subarrays with Bounded Maximum

题目描述We are given an array A of positive integers, and two positive integers L and R (L <= R).Return the number of (contiguous, non-empty) subarrays such that the value of the maximum array elem...

2018-09-10 19:22:45 104

原创 [LeetCode] 467. Unique Substrings in Wraparound String

题目描述Consider the string s to be the infinite wraparound string of “abcdefghijklmnopqrstuvwxyz”, so s will look like this: “…zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd….”.Now we have...

2018-09-10 13:16:13 126

原创 [LeetCode] 102. Binary Tree Level Order Traversal

题目描述Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ ...

2018-09-09 21:02:47 173

原创 [LeetCode] 417. Pacific Atlantic Water Flow

417. Pacific Atlantic Water Flow题目描述Given an m x n matrix of non-negative integers representing the height of each unit cell in a continent, the “Pacific ocean” touches the left and top edges of...

2018-09-09 20:57:49 137

原创 [Leetcode][648][Replace Words] stringstream学习

题目描述In English, we have a concept called root, which can be followed by some other words to form another longer word - let’s call this word successor. For example, the root an, followed by other, wh...

2018-09-03 23:25:34 126

原创 [LeetCode] 最长公共子序列

题目这个问题就是最长公共子序列问题,区别与我之前做过的最长公共子串问题。典型的这类问题的形式如下: 有两个串:x和y,长度分别为m和n,求它们的最长公共子序列。分析这题主要就是两个方面。首先,对于其最长公共子序列z,肯定有以下两种情况的其中一种:z_k = x_m = y_n,此时,z_k-1肯定在剩下的子串x.substring(0, m-1) 和 y.substring

2018-01-13 14:56:02 1870 1

原创 算法概论第八章课后题 8.12

题目复述8.12. The k-spanning TREE problem is the following. Input: An undirected graph G = (V, E) Output: A spanning tree of G in which each has degree <=<= k, if such a tree exits. show that for k >= 2

2017-12-30 21:23:16 218

原创 [LeetCode] DP之 Student Attendance Record II

题目Given a positive integer n, return the number of all possible attendance records with length n, which will be regarded as rewardable. The answer may be very large, return it after mod 10^9 + 7.A stud

2017-12-18 14:42:44 125

原创 [LeetCode] Binary Tree Zigzag Level Order Traversal

由于最近dp写的太多了,看什么题都像dp,就random pick one来换换口味,有好些都感觉太简单了,这道虽然不难,但是对于加深层次遍历的理解还是有用的。题目分析这题的思路其实很直接,就在逆序输出的时候,用一个stack作为中转(后来发现algorthm有个reverse函数,就直接调用reverse了,不必浪费空间)。其实还可以优化,但是只是代码上的,时间复杂度并不能优化了。而且做出来也已经

2017-12-10 13:27:36 147

原创 [LeetCode] 二维背包问题 Ones and zeros 另含两种一维背包问题

题目分析这是一个典型的二维背包问题,两个维度就是0的个数,和1的个数,因此就用二维背包的方法求解。 注意:由于可以进行空间复杂度的优化,所以最后的数组只用2维就可以了,但是时间复杂度还是不变。 另外,为了复习,顺便把一维背包问题的重复和不重复也写了。时间复杂度分析O(mnvmnv),m 是提供的0的个数,n是提供的1的个数,v是strs数组的长度代码class Solution {public

2017-12-04 18:06:41 442

原创 [LeetCode] DP 之 Maximum sum of 3 Non-Overlapping Subarrays

题目分析这个题目一个很巧妙的思路,就是来遍历中间的区间的起始点。 首先我们有一个数组sum,这是一个cdf,用于累加,这样的话,range(i, i+k-1) 的和就是sum[i+k] - sum[i+1]了,因为sum的第一个值为0,即起始下标实际从1开始。 然后是一个数组leftMaxIndex,注意到题目要取得是,当和相同时,起始序号最小的,因此我们可以leftMaxIndex[i]存的是

2017-12-02 16:27:27 160

原创 [LeetCode] DP 之 Edit Distance

题目Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)You have the following 3 operations permitted on a word:a)

2017-11-26 16:23:10 168

原创 [LeetCode] Partition to K Equal Sum Subsets

题目分析这题虽然归在DP里面,但是最后其实用的是dfs进行求解的。因为这题看起来如果使用dfs会更加的直观,和之前的combination sum2之类的其实会比较相似。 这题的关键问题在于超时了,我也不明白为什么会超时,但是最后我把sort那部分给去掉就没问题了,但是这部分只是O(logN),可能是因为排序之后会导致找的这个过程变慢,反而是无序的更容易找到问题的解。时间复杂度分析时间复杂度,由于

2017-11-20 19:04:46 210

原创 [LeetCode] DP之 Best time to buy and sell stock with transaction fee

题目分析这题是我很少做过的dp,和之前那个树的最小和问题有点像,因为它是有多个状态交错依赖的。这题中有四个行为:没有股票的情况下:买股票没有股票的情况下:什么也不做有股票的情况下:卖股票有股票的情况下:什么也不做它特殊的地方就在于不止有买卖这两种操作,还有有没有股票的持有与否。所以比较明确的思路就需要四个数组。当然,这在之后可以进行优化。然后的思路就很简单了 你要买,就必须之前没有股票

2017-11-12 21:29:31 153

原创 [LeetCode] Course schedule II

题目分析其实这题是不准备做的,但是由于其中考试有一题和这个很像,那题有点问题,所以就做一个类似的来看看自己是不是真的有什么没考虑到的。这题是一个很明显的拓扑排序,我用的是BFS实现。这题的思路很明显,就是不断地找到入度为0的,并且将它指向的节点的入度都减一,知道最后没有点的入度为0。但是要注意的就是边的指向问题。另外,还有一个特例,就是如果图中有环,之间返回一个空的vector,而不是已经排序的部分

2017-11-12 20:54:11 191

原创 [LeetCode] DP 之 Maximum Length of Repeated Substring

题目Given two integer arrays A and B, return the maximum length of an subarray that appears in both arrays.Example 1: Input: A: [1,2,3,2,1] B: [3,2,1,4,7] Output: 3 Explanation: The rep

2017-11-05 10:11:46 152

原创 [LeetCode] DP之 Minimum ASCII Delete Sum for two Strings

Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings equal. Example 1: Input: s1 = “sea”, s2 = “eat” Output: 231 Explanation: Deleting “s” from “sea”

2017-10-30 12:12:05 200

原创 [LeetCode] 贪心算法之 Patching Array

题目分析这是一道典型的贪心算法,非常的好。大意是:给我们一个数组和一个值n,让我们用这个数组里面的任意多个元素和,构造出[1,n]的序列。注意:最大值大于n即可,没有强调一定要恰好是n,所以这就是可以使用贪心算法的关键。 首先我们的角度不要从给定的数组入手,而是从生成的序列。考虑如果目前已经考虑的数组里面的值,可以构造的范围是[a,b](b < n),那么,我们下一个想要的值就是b+1,因此,考虑

2017-10-23 12:00:52 252

原创 #MD5 加密算法及实现

MD5 Algorithm Implement我算法的主要思想来自于 Wikipedia, RFC 1321 以及老师关于MD5的PPT1. MD5 概述MD5 即 Message-Digest Algorithm 5 (信息-摘要算法 5)MD4 (1990)、MD5(1992, RFC 1321) 作者 Ron Rivest,是广泛使用的散列算法,经常用于确保信息传输的完整性和一致性MD5

2017-10-23 11:51:10 458

原创 [LeetCode] 贪心算法之 Split Array into Consecutive Subsequence

题目You are given an integer array sorted in ascending order (may contain duplicates), you need to split them into several subsequences, where each subsequences consist of at least 3 consecutive integers

2017-10-16 18:45:29 226

原创 [LeetCode] 分治之 Median of Two Sorted Arrays 课后题算法实现 Hard

写在前面这道题目是我曾经在LeetCode上就见到过的,是很少的限定了时间复杂度的题目之一。这道题目的难度可以说是蛮高的,Hard 22.1%的通过率,可以说是在leetcode的所有题目来说也是非常难的了。当时学习分治法的时候曾经看过题目,也看了discuss但是并没有很好的思路,在O(log(m+n)log(m+n))的时间复杂度来说还是算比较难的。后来在老师讲课后习题的时候,恰好在算法概论第二

2017-10-12 21:22:50 126

原创 [LeetCode] Combination Sum 2

QuestionAnalysisThis question is similar to the question Path Sum 2 and Two Sum. I choose recursion to solve it, just like Path Sum 2. The main idea is easy, but an important question is how to elimin

2017-10-02 17:30:38 194

原创 [LeetCode] BFS 之 01 Matrix

题目题目分析这着实是一道简单的BFS题目,虽然我不明白我为什么是在DFS的部分看到了这题。很明显的BFS,也非常简单,比之前做过的下棋的什么的都要简单,只能算是复习了一下BFS的实操吧。其实我看discuss中dp也可以做,但是这部分我想之后再讨论。不过我看discuss中很多人都用了pair还有c++11中类似python的for循环,这个确实值得学习,我还没有完全习惯用c++11中的特性。时间复

2017-09-30 15:14:14 365

原创 [leetcode] DFS 之 Path Sum 2

题目分析这是一题简单的DFS,而且还不是针对于图,只是针对于树的,作为Medium难道可能有算是比较容易的了。但是一开始我还是出现了挺多次问题的,主要是因为一个失误,参数传错了,需要不断地debug,由于这种涉及到指针的问题没有IDE的话debug比较难(不得不说vs的debug很好用,但是如果要开虚拟机再开vs就太麻烦了)。其实这题有个小小的优化,一个就是关于不传vector的副本,而是传其引用,

2017-09-24 19:40:36 200

原创 [leetCode] 分治法之 Kth Largest Element Selection Algorithm实现 (6ms,超过99%)

题目描述题目分析:这题是出现过很多次的经典题目,但是这次是正好在算法课上学习了selection算法后,找来实践的。上次这道题目选择的是使用优先队列,用造好的轮子毕竟是简单,这次的selection算法是选择的Wikipedia的Quickselect词条下的伪代码实现。其中有两种,一种是尾递归实现,另一种是用循环模拟递归实现,不需要调用函数的循环实现当然更快,因此选用了循环的方式实现。以下给出Wi

2017-09-22 15:35:49 257

原创 [LeetCode] 3Sum 以及unordered_set的学习

题目 思路这道题是twosum的镜像问题,但是由于增加了一个数,难度增加了不少。有道类似的题曾经在大一上程序设计机考的时候见过,那时候是3重循环暴力求解,结果超时了。后来经过一点点优化,尽管时间复杂度仍是O(n^3),但是还是通过了。当然这题难度更高,因为会出现重复的数字。思路一:暴力求解这个不必详述,直接三重循环。时间复杂度为O(n3n^3 )。思路二:利用二分查找第三重循环利用二分查找,当然,

2017-09-13 21:19:06 237

原创 [LeetCode] Longest Substring Without Repeating Characters

题目 Given a string, find the length of the longest substring without repeating characters. Examples: Given “abcabcbb”, the answer is “abc”, which the length is 3. Given “bbbbb”, the ans

2017-09-11 17:39:36 141

原创 [LeetCode] 分治法学习之 Majority Element

由于分治法的学习刚开头,就选择了分治法中最简单的题,其实这题中我并不能体会到分治法,因为就是简单的遍历了。但是虽然我的算法是O(n)但是考虑到用了unordered_map,调用库函数会消耗大量的时间,其实算是很慢了。这题没有什么技术含量,我的做法就更没技术含量了,看了discuss中一位的算法,时间复杂度O(n),空间复杂度O(1),而且非常的优雅易懂,切入的角度也非常好,相比之下我的算法就

2017-09-08 20:56:50 647

原创 [LeetCode] Add Two Numbers

这题并不难,简单的链表知识而已,被列为是Medium其实有点高看了。整体只有一个要注意的点,就是在于当所有链表节点都被遍历过了,但是还有进位不为0时,应该在最后补一个进位的节点。当n是节点的个数时,时间复杂度为O(n)。下面贴上代码,这题算法改进的空间并不大,可能能写的更优雅,但是我看了一圈discuss,时间复杂度不可能会低于O(n)了/** * Definition for

2017-09-08 14:53:35 131

原创 [LeetCode] TwoSum LeetCode的初次尝试

LeetCode 初体验由于是第一次在LeetCode上面A题,而且确实很久没有写C++了,就选择了一道easy的题目进行尝试,先了解LeetCode的编辑器,环境,judging及反馈等。LeetCode给我的感觉还是很不错的,虽然编辑器不算特别好用,但是online编辑器一般都是这样,然后提交评测部分是重点,速度快,而且有报错,有Except Answer 和 Your Answer的

2017-09-08 13:58:43 192

原创 关于C#委托和事件的粗浅理解

关于C#委托和事件的粗浅理解第一次学习C#,老师一开始就要求学习委托和事件,一开始没有头绪,后来看了几篇教程和博客,渐渐有了一些自己的理解。如果还没有了解委托和事件的,推荐一篇很好很详细的博客 http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html委托首先,在我的理解当中,委托有点像一个C++中虚基类的应用或者指针,它可以指向它

2017-02-25 12:57:57 229

原创 sicily Binary Search

Description实现二分查找函数,函数接口如下。 /* size为数组s的实际大小。假定s非递减有序,如果s中存在值为target的元素,则返回最后一次出现的位序号,否则返回-1表示不存在。位序号从0开始计。*/int binSearch(const int s[], const int size, const int target){// 请将实现代码添

2016-12-10 13:01:21 384

原创 sicily AVLTree

Description给出结点的插入序列,构造AVL Tree。        Input第一行含一个整数t(0每个测试样例包含两行;第1行为一个整数n,表示插入的结点数;第2行依照插入顺序给出n个结点的数值(整数),之间用一个空格分隔。Output对每个测试样例单独一行输出对应AVL Tree的前序遍历序列,每输出一个结点的数值(包括最

2016-12-10 12:57:59 307

原创 初次利用并查集解决问题

这是我第一次学习幷查集,为了解决无向图中两个点是否在一个连通图的问题。由于数据比较大,直接搜索很容易超时,时间复杂度比较高。幷查集相对而言就好的多了。一下是代码// using disjoint algorithm#include #include using namespace std;int f[100001];int find(int x) { //find root

2016-12-10 12:37:25 281

原创 prim算法

这是基于最小生成树中的prim算法,对于n个点的无向带权图,时间复杂度为O(n^2),适合稠密图。主要思想是不断的向集合中加点,并选择集合中最短的边,然后加入到达的点。#include #include using namespace std;int map[1000][1000], cost[1000], longest;bool vis[1000]; // prevent it

2016-12-10 12:22:02 200

原创 抽象工厂的初次尝试 ((15c++ Homework) polymorphic and OOP design pattern Abstract Factory)

首先介绍我通过这题所理解的抽象工厂:所谓抽象工厂,就是把一些类看做工厂类,专门用来new产品类,而产品类所要实现的就是构造函数,和一些简单的方法。这种写法的好处在于,有效地提高了代码的封装性,符合面向对象的需求。下面是题目的代码。Client.cpp#include #include #include "Factory.hpp"#include "Product.

2016-04-25 19:10:34 199

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除