自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kang_TJU的博客

潮平两岸阔,风正一帆悬

  • 博客(356)
  • 收藏
  • 关注

原创 leetcode题目汇总

以下内容摘自[LeetCode-分类题解[全]. 同时,也记录自己的做题进展。数组[Remove Duplicates from Sorted Array] [Remove Duplicates from Sorted Array II] [Remove Element ] [Two Sum]链表字符串栈二叉树排序查找暴力枚举BFSDFS分治贪心动态规划[Triangle] [Maximum

2016-11-03 22:02:29 1596

原创 【推荐系统实践】读书笔记-第1章

本文按照书中的目录进行内容组织,对于个人认为比较重要的点,进行提炼梳理,方便自己加深印象。同时,也想借助的文章的分享出来,可供小伙伴们一同学习进步,也非常欢迎大佬拍砖指正。什么是推荐系统基本任务关联用户和信息。一方面帮助用户发现对自己有价值的信息,一方面让信息展现在他感兴趣的用户面前。从而解决信息过载的问题。和分类目录以及搜索引擎的区别分类目录:类似国内hao123这样的网...

2018-12-06 15:04:23 499

原创 Accelerated-c++-置换索引

问题第五章练习题5-1. 设计和实现一个程序以产生一个置换索引。 在一个置换索引当中,每个短语都是以这个短语的每一个单词作为索引的(类似倒排,内容做索引)。因此,假如有如下的输入: The quick brown fox jumped over the fence 得到如下的输出: The quick \t brown fox jumped over the \t f

2017-12-02 21:33:06 710

原创 linux系统编程-一个demo

本目展示一个linux环境下系统编程的一个demo。主要是为了讲解项目下文件夹的布局以及makefile的写法。 程序的源代码来自于书籍《Accelerated c++》一书当中第四章的例子。布局一个基本的项目主要是以下5项构成:src:存放项目的源文件。目录可以细分。inc:存放项目的头文件。目录可以细分;bin:存放二进制可执行文件。Makefile:Makefile文件run.sh

2017-11-29 13:41:55 797

原创 python可视化-matplotlib学习2

本目承接该系列上一目,总结更多的我用到的的画图技巧。柱状图(横向)import matplotlib.pyplot as pltfrom matplotlib import cmimport numpy as nplabel = ['a', 'b', 'c', 'd', 'e', 'f']x = sorted([1234, 221, 765, 124, 2312, 890])idx = np.

2017-11-16 13:09:54 502

原创 作业部落markdown-demo

欢迎使用 Cmd Markdown 编辑阅读器我们理解您需要更便捷更高效的工具记录思想,整理笔记、知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown: 整理知识,学习笔记 发布日记,杂文,所见所想 撰写发布技术文稿(代码支持) 撰写发布学术论文(LaTeX 公式支

2017-11-03 13:22:27 2355 1

原创 leetcode-75-sort colors

问题题目:[leetcode-75-sort colors]思路以下思路参考[算法系列之十一荷兰国旗问题] 我们可以把数组分成三部分,前部(全部是0),中部(全部是1)和后部(全部是2)三个部分,每一个元素(红白蓝分别对应0、1、2)必属于其中之一。 将前部和后部各排在数组的前边和后边,中部自然就排好了。 设置两个指针begin指向前部的末尾的下一个元素(刚开始默认前部无0,

2017-10-30 17:29:12 459

原创 leetcode-96-Unique Binary Search Trees

问题题目:[leetcode-96]思路catalan数。至于怎么分析的,参考自己的lintcode刷题里对这个题的解释。基本方法是固定根节点之后,剩下的N-1个节点,依次在左右两支展开。代码class Solution {public: int numTrees(int n) { return catalan(n); }private: int cata

2017-10-25 22:58:21 311

原创 leetcode-698-Partition to K Equal Sum Subsets

问题题目:[leetcode-698]思路能想到的是搜索的思路,但是不知道怎么用。 参考了[698. Partition to K Equal Sum Subsets]看了别人的代码,知道这个题搜索的技巧在于,对于每一个元素nums[i],枚举每一个子数组的当前位置。这也是一种枚举策略。并且,这个题目只有这么理解枚举,才能做出来。代码(wa)下面枚举的思路没有错,就是这个思路。但是TLE。clas

2017-10-24 21:37:07 1086

原创 leetcode-416-Partition Equal Subset Sum

问题题目:[leetcode-416]思路先求和,如果不能被2整除。肯定不能二等分。 对于[1,3]来说,虽然和可以被二等分,但是显然的是,数组并不能二等分。 所以,问题转化为是否存在一个子数组,他的和为sum/2。 当然,这个题可以枚举所有的子数组,判断,只要有一个就可以。 还有一个办法是背包,将数组放入容量为sum/2的背包中,如果可以被二等分。那么背包的最大价值一定是sum/2。否则,

2017-10-24 20:27:02 315

原创 leetcode-18-4Sum

问题题目:[leetcode-18]思路这个题还是和之前一样,多了一层循环。 排序之后的夹逼! 但是,要注意,夹逼在相等的情况下,i,j都要移动的。这点不要忘了。代码class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int sz = nums.size

2017-09-29 23:00:58 324

原创 leetcode-16-3Sum Closest

问题题目:[leetcode-16]思路注意,夹逼的思路一定要注意,必须要排序!!!否则,就是错的。 夹逼其实也相当于某种程度的遍历,但是它的技巧性很强。关键就是在排序,最近收获的这个方法非常赞啊!引入一个new_diff保留最小差值即可。代码class Solution {public: int threeSumClosest(vector<int>& nums, int target

2017-09-29 22:46:44 347

原创 leetcode-15-3sum

问题题目:[leetcode-15]思路我之间用dfs做的。 但是,这次看到新的方法。算是两根指针夹逼的做法。 相等时的情形,处理比较重要。避免了o(n^3)。如果,i,j不动。就不行。代码class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector< vector<in

2017-09-28 16:45:51 322

原创 leetcode-480-Sliding Window Median

问题题目:[leetcode-480]思路参考:[C++ two multiset solution] 代码思路非常的清晰。 不能继续使用priority_queue的原因是,删除操作不方便。 所以,改用multiset,优点是,插入删除都很块,并且有序。这样可以维护前半部分和后半部分,其实map也可以实现这个功能。他们都不需要随机访问,但是map不能存重复元素。代码

2017-09-25 16:18:04 660

原创 leetcode-295-Find Median from Data Stream

问题题目:[leetcode-295]思路基本思路就是将前半部分元素维护在大根堆当中。 后半部分元素维护在小根堆当中。但是要注意的是,大根堆和小根堆可以维护各自的有序性。但是,这两个部分的有序性需要在每次插入的时候特别判断以下。 每次,都进行维护。这样就不会出现某一次插入需要弹出很多元素的情形。代码class MedianFinder {public: /** initialize y

2017-09-25 15:09:26 265

原创 leetcode-4-Median of Two Sorted Arrays

问题题目:[leetcode-4-Median of Two Sorted Arrays]思路这个题目还是比较困哪的。 说一下基本的思路,这个题求两个有序数组的中位数。那么,我们给出一个更一般的办法,即求出两个有序数组的第k位数。 大致的思路是这样,各自考虑A[k/2-1]与B[k/2-1]。如果是朴素的[1,3,5],[2,4,6]这样的情形,那么各自[k/2-1]元素构成了有序数组合并之后的

2017-09-25 14:30:26 575

原创 linux系统编程-epoll

本文对epoll的注意点做一个小结。接口epoll常见的接口有三个:1.创建epoll的实例,在内核中初始化相应的数据结构// 创建epoll instance// linux 2.6.8之后,size参数没有实际意义。但是,需要比0大int epoll_create(int size);2.向epoll instance注册,修改,删除相应的fd及其事件。这点有别于select,后者每次监听的

2017-09-25 00:17:56 376

原创 leveldb-expand文档

leveldb-expand文档作者:kang邮箱:[email protected]项目地址:[]功能一(前缀匹配)1.接口设计virtual Status GetByPrefix( const ReadOptions& options, const Slice& key, in

2017-09-24 20:18:25 566

原创 leetcode-153-Find Minimum in Rotated Sorted Array

问题题目:[leetcode-153]思路如果没有旋转,直接返回。 如果,旋转,二分的思路。和之前方法一样,注意hign和low的更新方法。最后返回二者相邻是边界条件。 因为最小值肯定不存在有序区间当中。只能在非有序区间中寻找。代码class Solution {public: int findMin(vector<int>& nums) { int low = 0,

2017-09-24 17:49:43 525

原创 vector实现

给出的实现,参照accelerated c++一书当中的内容。总结有几个点说一下啊: 1.注意三个指针的语义,data,avail,limit。增加limit之后,注意,修改avail的用法,尤其是迭代器那一块。 2.rule of three原则。 3.allocator的用法,allocate,deallocate,construct,destroy的用法,以及为什么要自己管理。我们只是使

2017-09-19 10:43:37 407

原创 leveldb-expand接口设计V2

leveldb-expand接口设计项目地址:https://github.com/google/leveldb接口设计类型定义// 记录类型typedef std::pair<std::string, std::string> RecordType; 前缀匹配:virtual Status GetByPrefix( const Slice& prefix,

2017-09-18 22:28:04 642

原创 leetcode-23-Merge k Sorted Lists

问题题目:[leetcode-23]思路归并的思路,谁小谁走。 多文件排序的时候,也是这个思路,此时的指针换成文件指针。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), nex

2017-09-15 20:18:32 365

原创 leetcode-75-Sort Colors

问题题目:[leetcode-75]思路参考[几种有关排序的常见面试问题] 基本思路就是partition。 增减begin cur end begin 前面的元素全部是0, end后面的元素全部是2. [begin, cur)这个区间的全部是1,这是个很重要的特点!!!代码class Solution {public: void sortColors(vector<int>&

2017-09-11 12:46:21 273

原创 图算法小结

本目总结常见的图算法。kruskal构造mst,按边从小到大遍历,如果边的响铃节点位于不同的集合,那么该边是mst当中的一条边。这个地方需要并查集的知识。题目:[jobdu-1017]代码#include <iostream>#include <vector>#include <algorithm>#define N 100int tree[N + 8];struct Edge {

2017-09-10 18:15:25 282

原创 leetcode-90-Subsets II

问题题目:[leetcode-90]思路上一目的题目需要两个条件: 1.必须是升序 2.试探过的元素不能反复试探 3. 如果是相同的元素,同一个位置不能由多个相同元素试探。但是要注意,如果相同元素已经试探了别的位置,那么这个位置不可能由相同元素试探。即使元素相同。代码class Solution {public: vector<vector<int>> subsetsWithDup(

2017-09-09 17:54:26 224

原创 leetcode-78-Subsets

问题题目:[leetcode-78]思路按照层次进行枚举即可。主要剪枝的条件。 1. 当前元素之前不能出现过 2. 必须是升序注意状态恢复。代码class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> ret; vector<i

2017-09-09 13:18:50 264

原创 华为2018校招

题目1 题目描述 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串; 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串“1234”的长度就小于数字串“1359055”,如果没有数字,则返回空字符串(“”)而不是NULL!(说明:不需要考虑负数) 输入描述: 字符串 输出描述: 连续数

2017-09-07 11:50:01 5721 1

原创 c++学习-匿名名字空间用法

用法下午在学习levedb源码的时候,看到version_set.cc有这样一段代码:// Callback from TableCache::Get()namespace {enum SaverState { kNotFound, kFound, kDeleted, kCorrupt,};struct Saver { SaverState state; const

2017-09-05 14:44:53 1167

原创 LRUCache-c++实现

代码//LRUCache.h#ifndef LRUCACHE_H_#define LRUCACHE_H_#include <utility>#include <unordered_map>#include <list>template<class KeyType, class ValueType>class LRUCache {public: LRUCache(int capac

2017-09-04 09:55:43 633

原创 leetcode-145-LRU cache

问题题目:[leetcode-145]思路参考了[O(1) unordered_map + list + splice] 参考者代码的思路非常清晰。 首先,插入和获取的时间复杂度在O(1),不能用deque去实现。否则无法到达常数。采用链表,插入,删除的时间复杂度都是o(1)。需要双向链表,可以自己实现。可以使用stl::list. 由于链表不支持随机访问,所以,做一次哈希。代码class LR

2017-09-02 17:52:03 353

原创 leveldb-编码

参考这个链接[ leveldb源码剖析–编码],把为什么要编码以及如何编码讲的比较清楚。 我再简单记录下我自己的学习心得。主要是回答几个问题,回答清楚就行了。 为什么要编码? 假设key = “hello”, value=”world”,对于这个pair,你应该怎么存储呢?显然直接存成一个字符串可以。但是,那么怎么知道谁是key谁是value .所以,建议的存储方式:key_len, ke

2017-08-30 13:52:39 425

原创 leetcode-8-String to Integer (atoi)

问题题目:[leetcode-8]思路说下思路,虽然做了一个半小时。不过思路基本上一直都是正确的。这个题目应该反复写下,应为要考虑的情形是比较多的。大的思路是找到第一个pattern出来,然后围绕这个pattern处理。主要处理三部分逻辑:抽出pattern符号处理越界代码class Solution {public: int myAtoi(string str) {

2017-08-29 15:37:07 307

原创 leetcode-7-Reverse Integer

问题题目:[leetcode-7]思路这个题翻转之后要小心越界的情况。代码class Solution {public: int reverse(int x) { if(!x) return x; if(x>0){ return helper(x); } else{ int tm

2017-08-29 13:49:25 278

原创 leveldb-expand接口设计

leveldb-expand接口设计接口设计前缀匹配:virtual Status GetPrefix( const Slice& prefix, std::map<std::string, std::string>&entry_list ); 接口名:GetPrefix 接口功能:根据prefix指定的前缀,获取匹配该前缀的所有k-

2017-08-28 18:56:59 354

原创 c++学习-std::list

这个东西到不难,有一些接口需要熟悉,暂时记录下。代码#include <list>#include <iostream>int main(){ std::list<int> mylist; typedef std::list<int>::iterator iter; iter it1; iter it2; for( int i = 1; i <= 3; ++i

2017-08-25 18:16:43 460

原创 jobdu-1447-最短路

问题题目:[jobbu-1447]思路DIJKSTRA( G, w, s ){ 1.INITIALIZE-SINGLE-SOURCE(G,s) 2.S = EMPTY 3.Q = V[G]; 4.while Q!=EMPTY 4.1 do u = EXTRACT-MIN(Q); 4.2 S = S U {u}; 4.3

2017-08-22 21:08:38 301

原创 poj-2046-循环子串问题

问题题目:[poj-2046]思路这个题目有个结论: 若s存在循环子串,当且仅当,len可以被len - prefix[len-1]整除。连接次数为len / len-prefix[len-1]. 充分性我不会证明,我就证明下必要性吧。 不放假设s = pattern * n; len = strlen(s); 显然prefix[ len - 1 ] = pattern*(n-1),这个是最

2017-08-19 21:56:18 619

原创 leetcode-125-Valid Palindrome

问题题目:[leetcode-125]思路先预处理下,然后利用库即可。代码class Solution {public: bool isPalindrome(string s) { std::string tmp; int sz = s.size(); for(int i = 0; i < sz; ++i){ if(

2017-08-19 19:55:40 278

原创 leetcode-28-Implement strStr()

问题题目:[leetcode-28]思路朴素的思路,主串回溯。代码class Solution {public: int strStr(string haystack, string needle) { string& txt = haystack; string& pat = needle; int n = txt.size();

2017-08-19 19:47:15 302

原创 素数对-腾讯2018校招

问题题目:[素数对-腾讯2018校招]思路素数筛法筛出来,判断即可。 这个题用素数筛法筛出来,判断的复杂度也比较低。我第一次用集合就慢。代码#include <iostream>#include <string.h>#define N 1024int flag[N]; // flag[i] = 0, iff i is prime numbervoid generate_prime_table(

2017-08-17 22:16:10 300

空空如也

空空如也

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

TA关注的人

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