Leetcode 编程训练(转载)】的更多相关文章

Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google.微软.Facebook.Amazon之类的这些公司,基本上是应试教育的功利主义. 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力.因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了大学里的“算法和数据结构”里的好些最基础最基础的知识,基本上没有什么训练.所以,当我看到有人在做这些题的时候,我也蠢蠢欲动地想去刷一下. 于…
Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google.微软.Facebook.Amazon之类的这些公司,基本上是应试教育的功利主义. 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力.因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了大学里的“算法和数据结构”里的好些最基础最基础的知识,基本上没有什么训练.所以,当我看到有人在做这些题的时候,我也蠢蠢欲动地想去刷一下. 于…
Union Find算法基础 Union Find算法用于处理集合的合并和查询问题,其定义了两个用于并查集的操作: Find: 确定元素属于哪一个子集,或判断两个元素是否属于同一子集 Union: 将两个子集合并为一个子集 并查集是一种树形的数据结构,其可用数组或unordered_map表示: Find操作即查找元素的root,当两元素root相同时判定他们属于同一个子集:Union操作即通过修改元素的root(或修改parent)合并子集,下面两个图展示了id[6]由6修改为9的变化:   …
滑动窗口基础 滑动窗口常用来解决求字符串子串问题,借助map和计数器,其能在O(n)时间复杂度求子串问题.滑动窗口和双指针(Two pointers)有些类似,可以理解为往同一个方向走的双指针.常用滑动窗口代码框架如下: //3. Longest Substring Without Repeating Characters int lengthOfLongestSubstring(string s) { vector<,); //用于对窗口内的各个字符计数 ,end=,res=; //窗口计数器…
拓扑排序基础 拓扑排序用于解决有向无环图(DAG,Directed Acyclic Graph)按依赖关系排线性序列问题,直白地说解决这样的问题:有一组数据,其中一些数据依赖其他,问能否按依赖关系排序(被依赖的排在前面),或给出排序结果. 最常用解决拓扑排序问题的方法是Kahn算法,步骤可以概括为: . 根据依赖关系,构建邻接矩阵或邻接表.入度数组 . 取入度为0的数据(即不依赖其他数据的数据),根据邻接矩阵/邻接表依次减小依赖其的数据的入度 . 判断减小后是否有新的入度为0的数据,继续进行第2…
位运算基础 说到与(&).或(|).非(~).异或(^).位移等位运算,就得说到位运算的各种奇淫巧技,下面分运算符说明. 1. 与(&) 计算式 a&b,a.b各位中同为 1 才为 1,否则为0,a&1和a%2效果一样:来看两道典型的题目,第1道计算整数二进制中 1 的位数: //191. Number of 1 Bits int hammingWeight(uint32_t n) { ; ){ n=n&(n-); ++res; } return res; } n=…
回溯基础 先看一个使用回溯方法求集合子集的例子(78. Subsets),以下代码基本说明了回溯使用的基本框架: //78. Subsets class Solution { private: void backtrack(vector<vector<int>>& res,vector<int>& tmp,vector<int>& nums,int start){ res.push_back(tmp); //满足一定条件下将当前数据加…
Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. Binary Search int search(vector<int>& nums, int target) { //nums为已排序数组 ,j=nums.size()-; while(i<=j){ ; if(nums[mid]==target) return mid; ; ;…
转载地址:http://www.cnblogs.com/teroy/p/4015461.html 前言 最近在学习Web Api框架的时候接触到了async/await,这个特性是.NET 4.5引入的,由于之前对于异步编程不是很了解,所以花费了一些时间学习一下相关的知识,并整理成这篇博客,如果在阅读的过程中发现不对的地方,欢迎大家指正. 同步编程与异步编程 通常情况下,我们写的C#代码就是同步的,运行在同一个线程中,从程序的第一行代码到最后一句代码顺序执行.而异步编程的核心是使用多线程,通过让…
你应当如何学习C++(以及编程)(rev#1) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Javascript是世界上最受误解的语言,其实C++何尝不是.坊间流传的错误的C++学习方法一抓就是一大把.我自己在学习C++的过程中也走了许多弯路,浪费了不少时间. 为什么会存在这么多错误认识?原因主要有三个,一是C++语言的细节太多.二是一些著名的C++书籍总在(不管有意还是无意)暗示语言细节的重要性和有趣.三是现代C++库的开发哲学必须用…
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相…
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 2.So…
转自:http://www.caole.net/diary/emacs_write_cpp.html Table of Contents 版权说明和参考文献 参考文献: 版权说明: 序 基本流程 基本环境设置 编辑环境配置 自动补齐 编译和调试程序 阅读代码 版权说明和参考文献 按照惯例,我写的文章在最开始处放版权说明和参考文献. 参考文献: hhuu @ newsmth 的<Emacs的日常生活> emacs 的文档 emacs 相关插件的文档 版权说明: 转载请注明转自曹乐的个人主页 ww…
这篇文章我将介绍如果用最简洁的方式配置Redis Server, 以及如何使用C#和它交互编程 一. 背景介绍 Redis是最快的key-value分布式缓存之一 缺点: 没有本地数据缓冲, 目前还没有完整的数据聚集化支持 优点: 配置简单, 使用方便, 高性能,支持不同的数据类型(hashes, lists, sets, sorted sets) ASP.NET WebUI for viewing content of the cache 二. 安装Redis 1) 从github下载最新的3…
在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“, 再次返回到主调shell,可将其理解为分界符(delimiter).既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以 进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突.其使用形式如下: 交互式程序(命令)<<EOF command1 command2 ...... EOF ”EOF“中间的内容将以标准…
Python编程规范及性能优化 Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器,默认保存为 utf-8 格式. 注释 业界普遍认同 Python 的注释分为两种的概念,一种是由 # 开头的“真正的”注释,另一种是 docstrings.前者表明为何选择当前实现以及这种实现的原理和难点,后者表明如何使用这个包.模块.类.函数(方法),甚至包括使用示例和单元测试. 坚持适当注释原则.对不存在技术难点的代码坚持不注…
在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作.串口编程特殊在于串 口通信时相关参数与属性的设置.嵌入式Linux的串口编程时应注意,若在根文件中没有串口设备文件,应使用mknod命令创建,这这里假设串口设备是 /dev/ttyS0,介绍一下串口的编程过程.#mknod /dev/ttyS0 c 4 641.打开串口    打开串口设备文件的操作与普通文件的操作类似,都采用标准的I/O操作函数open().    fd =…
Qt进程间通信 TCP / IP 跨平台的 QtNetwork模块提供的类网络编程便携式和容易. 它提供了高层类(例如,QNetworkAccessManager, QFtp)使用特定的应用层协议通信,低层类(例如, qtcpsocket, QTcpServer, QSslSocket为实现协议). 共享内存 跨平台共享内存类, QSharedMemory提供了访问操作系统的共享内存实现. 它允许安全由多个线程访问共享内存段和过程. 此外,QSystemSemaphore可用于控制对资源的访问共…
第七章 gawk功能:gawk编程 7.1.1 数字和字符串常量     初始化和类型强制  在awk中,变量不需要定义就可以直接使用,使用一个变量就是对变量的定义.变量的类型可以试数字.字符串,或者两者都有.在赋值的时候,等号又变表达式的类型就是变量的类型. 根据使用的不同,未初始化的变量的值为0或者空白字符串“”     强制字符串转换为数字: 强制数字转换为字符串: 所有split函数建立的域和数组元素都被认为是字符串变量,除非它值包含数字值,如果域或者数组元素为空(null),那么它们的…
在网上找了很多的资料,现将这些资料整合起来,详细介绍一下VC下的socket编程,并提供一个服务器客户端具体的实例.希望对您有所帮助 一.原理部分 (个人觉得这篇写的可以,所以转与此,原文地址:http://dev.yesky.com/78/2683078.shtml) 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型.在这种方案中客户应用程序向服务器程序请求服务.一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一 直处于休眠状态,直到一个客…
1. 概述 1.1 函数式编程简介 我们最常用的面向对象编程(Java)属于命令式编程(Imperative Programming)这种编程范式.常见的编程范式还有逻辑式编程(Logic Programming),函数式编程(Functional Programming). 函数式编程作为一种编程范式,在科学领域,是一种编写计算机程序数据结构和元素的方式,它把计算过程当做是数学函数的求值,而避免更改状态和可变数据. 函数式编程并非近几年的新技术或新思维,距离它诞生已有大概50多年的时间了.它一…
转载地址:http://blog.sina.com.cn/s/blog_4b226b92010119l5.html 当服务器close一个连接时,若client端接着发数据.根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了.根据信号的默认处理规则SIGPIPE信号的默认执行动作是 terminate(终止.退出), 所以client会退出.若不想客户端退出可以把 SIGPIPE设为SI…
原文作者的观点是Lambda表达式一定会包含在JDK 7中,而全文也着重介绍了这方面的知识,作者认为函数式编程的概念也将出现在JDK 7中. Lambda表达式 Lambda表达式并不是什么新概念,自Alonzo Church提出Lambda微积分的概念以来,已经有30个年头了,从那时开始,它们就成为许多函数式编程语言的重要特性,最突出的可能要算Lisp,现在Lambda表达式已经跻身于函数式编程语言的一等公民.Lambda表达式是一个匿名函数,为了演示,这里有一个段你可能经常看到的Python…
这个博主写的文章真是细腻,全面,严谨,应当多读几回 原文http://www.cnblogs.com/QG-whz/p/5517643.html 阅读目录 以良好的方式编写C++ class Class with pointer member(s):记得写Big Three static与类 正文 回到顶部 以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯. ① Header(头文件)中的防卫式声明complex.h: # ifn…
1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要知道一些常用的网络命令 netstat命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项 我们常用的选…
Python Async/Await入门指南   转自:https://zhuanlan.zhihu.com/p/27258289 本文将会讲述Python 3.5之后出现的async/await的使用方法,以及它们的一些使用目的,如果错误,欢迎指正. 昨天看到David Beazley在16年的一个演讲:Fear and Awaiting in Async,给了我不少的感悟和启发,于是想梳理下自己的思路,所以有了以下这篇文章. Python在3.5版本中引入了关于协程的语法糖async和awa…
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().co…
已知链表1->2->3->4,先需要删除3这个节点,请完成函数.注意,这里只给定要删除的节点3,并不知道3之前的节点是哪个,以及整个链表是什么节点. void delete(ListNode node){ node.val = node.next.val; node.next = node.next.next; } 请思考为什么要这样做?和以往的删除节点有什么区别?…
2019-08-29 #274 H指数 2019-08-28 #287 寻找重复数 #875 爱吃香蕉的珂珂 #704 二分查找 2019-08-27 #744 寻找比目标字母大的最小字母 #225 用队列实现栈 #1011 在 D 天内送达包裹的能力 2019-08-26 #441 排列硬币 #367 有效的完全平方数 #374 猜数字大小 #278 第一个错误的版本 #275 H指数 II 2019-08-25 #240 搜索二维矩阵 II #167 两数之和 II - 输入有序数组 #15…
2019-09-16 #1171 从链表中删去总和值为零的连续节点 #1170 比较字符串最小字母出现频次 #1169 查询无效交易 #226 翻转二叉树 2019-09-15 #1190 反转每对括号间的子串 #1189 “气球” 的最大数量 2019-09-14 #238 除自身以外数组的乘积 #136 只出现一次的数字 #557 反转字符串中的单词 III #344 反转字符串 #1021 删除最外层的括号 #797 所有可能的路径 #804 唯一摩尔斯密码词 2019-09-13 #61…