- 博客(43)
- 资源 (8)
- 收藏
- 关注
原创 leetcode Letter Case Permutation
最朴素的回溯:class Solution {public: vector<string> letterCasePermutation(string S) { string tmp = ""; vector<string> ans; LetterCase(0, S, ans, tmp); re...
2019-04-08 21:38:35
158
原创 leetcode Trapping Rain Water
AC代码时间复杂度为O(n),空间复杂度为O(1)。只用了i,j,k三个变量作为指针。思路是:设置两个指针i,j,i指向左边的第一个高大于0的柱子,j指向右边第一个高大于0的柱子。然后,选择这两课柱子中较矮的那个(若两者相等,则选择i),从这个位置开始直到其后(或者其前)的第一个大于它的高度的柱子之间,统计这段区间内的面积。如这里第一次循环时选择i,则i向右移动到第二个黑色柱子处停下(此时...
2019-03-29 13:24:25
210
原创 leetcode Third Maximum Number
如何求无序数组中最大的k个数系列1这道题是求数组中第三大的数。方法一:C++的set容器的特点是内部自动有序且不包含重复元素。本题可以保持一个大小为3的set容器。每次向set中添加元素,添加完后若元素个数大于3,则从set中删除最小的元素。保留的永远是数组当前最大的3个元素。AC代码class Solution {public: int thirdMax(vecto...
2019-03-28 09:34:10
222
原创 LeetCode. Two Sum系列之IV - Input is a BST
解法一:使用HashSet,在中序遍历树的同时,判断是否在HashSet中已经存在一个值和当前根节点的值相加可以满足等于target。c++版本:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig...
2019-03-26 16:18:27
149
原创 LeetCode. Two Sum系列
1. Two Sum三种解法,第一种是暴力破解,时间复杂度为O(n^2)。第二种是使用HashMap,第三种也是使用HashMap,是在第二种基础上的优先,这里只记录第二种和第三种。第二种解法JAVA版本class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, ...
2019-03-26 15:14:15
124
原创 392. Is Subsequence
这道题是给出两个字符串,求第一个字符串s是否是第二个字符串t的子序列。即字符串s中每个字符在字符串t都出现过,且相对顺序不变,但是可能不连续。AC代码如下:思路:依次检查s中每个字符是否都在字符串t中,如果在就继续在字符串t中向后找s中的下一个字符。如果已经遍历了字符串t中的每一个字符还没有找完字符串s,则说明s不是t的子序列。class Solution {public:...
2019-03-25 19:39:11
104
原创 LeetCode Remove Duplicates from Sorted Array
这一系列有几道题,这一题是其中最简单的那道。但是掌握了解题的思想就会发现都是一样的解法。设定两个指针i和j,其中i指向新数组的最后一个元素(也就是说i及其之前的元素都是不重复的元素),而j指向当前正在判断是否加入新数组中的元素(也就是说j前面的元素都已经加入确定了是加入原数组中,还是丢弃)。如果出现了nums[i]==nums[j],说明出现重复,就丢弃nums[j],直接指针后移,否则将...
2019-03-25 19:11:27
61
原创 LeetCode Daily Temperatures
思路:从后往前遍历数组。原数组用T表示。设置一个可变数组ans保存结果,用于保存每一天为了等到一个比这天更暖和的天(即找到一个比这个数更大的数)应该等待的天数。数组下标从0到n-1,n表示数组中总的元素个数。对于数组中的最后一个数,毫无疑问,ans[n-1]=0;对于剩下的每一个数则有几种情况。第一种情况是最简单的,就是对于数组中的第i个数而言,位于其后的第i+1个大于它即T[i]<...
2019-03-13 22:18:34
142
原创 Insertion Sort List
AC代码1class Solution {public: ListNode* insertionSortList(ListNode* head) { if(head==NULL || head->next==NULL) return head; ListNode* pCur = head; ...
2019-03-06 11:12:49
98
原创 C++ vector基础知识
vector中在头部插入一个元素。如下代码所示: vector<int> a(3, 2); vector<int>::iterator it; it = a.begin(); a.insert(it, 100); for(int i=0;i<a.size();i++) cout<<a[i]<<" "; cout<&...
2019-03-04 22:15:33
167
原创 LeetCode Remove Duplicates from Sorted List II
思路:这道题可以添加一个额外的结点作为头结点,头结点中不存储数据,只作为第一个结点。这里采用的是未使用额外头结点的解法。保持三个指针,p, q, cur,这三个指针分别指向三个相邻结点, p是q的前驱,cur是q的后继。初始化时p=NULL, q = head, cur =head->nex。若q->val!=cur->val,即q指向的结点的val和cur指向的节点的...
2019-03-02 21:36:15
134
原创 leetcode Partition List
思路:思路是受了快排中将数组通过一个主元分成两部分的思路启发。因此,保存两个指针p1和p2,p1指向当前最后一个值小于x的结点,p2指向当前正在检查的结点,处于head指针和p1(包括p1指针指向的结点)之内的所有结点都满足值小于x,处于p1的后继结点(p1->next指向的结点)和p2的前驱结点(该结点的next指向p2)之间的所有结点的值大于等于x,如果p2的值大于等于x,则让p2指向其...
2019-03-02 15:26:44
124
原创 Leetcode Reverse Linked List
思路:逆转一个链表,分别考虑链表为空,链表有1个结点,链表有>=2个结点。若为前两种情况,可直接返回。若链表中有>=2结点。则一次从头结点开始逆转每个结点的next指针。从头结点开始,需要逆转头结点指向第2个结点的next指针,必须保存是三个指针,这三个指针分别指向头结点,第2个结点,第三个结点(如果第三个结点存在的话)。这样需要逆转头结点指向第2个结点的指针,只需要修改指向第2个...
2019-03-01 11:11:00
72
原创 leetcode Validate Binary Search Tree
AC代码一class Solution {public:bool isValidBST(TreeNode* root) { if(root==NULL) return true; if(root->left==NULL && root->right==NULL) return true; bool lflag = isValidBST(...
2019-02-27 22:28:29
87
原创 python list 方法
有三种方法可以从list中删除元素,用法各有不同。list 的pop()方法从list的尾部删除元素。如下例。list的remove(item)方法从list中删除指定的元素,如果在list中存在多个相同元素,则删除索引最小的那个。必须传入一个参数,指定要删除的元素。pop()和remove()为list的方法。而del则不是。del 函数从list中删除元素。当使用del...
2019-02-27 19:39:46
133
原创 123. Best Time to Buy and Sell Stock III
AC代码class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()<=1) return 0; int i,k; vector<int> arr,ans; for...
2019-02-25 20:36:23
184
原创 C++ 引用与指针
引用什么是引用呢?引用是变量的别名,是指向变量的常量指针。#include<iostream>using namespace std;int main(void){ int i = 10; int &r = i; cout<<"i="<<i<<" "<<"r
2019-01-18 21:59:25
142
原创 几个java实现的PV操作经典例子:读者写者、贪睡的理发师、生产者消费者
其中读者写者和贪睡的理发师使用的Semaphore类;生产者消费者使用的是管程。读者写者:class Semaphore{ int value; public Semaphore(int v) { this.value = v; } public synchronized void p() { valu...
2019-01-18 20:41:55
1995
1
原创 python3 dict按照字典的键或值排序
下面是一段实例代码。运行结果:对字典使用sorted函数进行排序的结果是一个列表。列表中的每个元素是一个元组。 从以上代码的运行结果可以看出:通过使用匿名函数或者operator模块的itemgetter函数可以指定一个比较的关键字。关于operator.itemgetterimport operatora = [11, 22, 33, 44]f = ope...
2018-09-15 20:10:06
11590
原创 启动elasticsearch
使用elasticsearch时,同时启动kibana和head插件。什么是kibana以下是我从网上找到的对kibana的介绍。但是对我来说,使用kibana主要是因为与【它可以提供与Elasticsearch REST API实现可视化交互】可以在kibana面板中输入查询语言,方便地操作elasticsearch索引。启动elasticsearch我的elastics...
2018-08-03 15:43:18
1811
原创 js在一个字符串中查找另一个字符串
自己实现了KMP算法代码如下:PMT(str){ let next = [], n = 0; next[0] = 0; for(let i = 1; i < str.length; i++){ while (n > 0 && str[i] != str[n]){ // 当前字符不等于第n+1位字符 那么n为次大匹配格式再...
2018-07-26 18:35:30
1370
原创 使用computed计算属性会来观察和响应数据变动
computed是基于依赖缓存的。为了防止滥用 watch,这里使用computed更适合。computed只有在它的相关依赖发生改变时才会重新求值。这意味着只要上面的firstName和lastName不发生改变,多次访问fullName计算属性会立即返回之前的计算结果,而不必再次执行函数。...
2018-07-13 16:13:27
4086
原创 vue中的watch命令式回调
侦听属性用于观察和响应 Vue 实例上的数据变动。watch中监听了firstName和lastName两个属性。以first Name为例。function中的参数val表示修改后的firstName值。当firstName发生变化时,fullName就会重新计算,fullName=新的firstName +' ' +原来的lastName(因为lastName没变化)。...
2018-07-13 16:04:46
1180
1
原创 python字典的方法
下面定义了一个字典,调用字典的keys和values方法分别能获得两个迭代器,使用内置函数list能产生这两个迭代器的内容,即两个列表,分别代表字典的键列表和值列表。运行结果字典排序运行结果...
2018-07-08 16:34:26
134
原创 python创建新的对象和创建对象的引用
变量和对象存在内存中的不同部分,并通过连接相关联。变量总是连接到对象,并且绝不会连接到其他变量上,但是更大的对象可能连接到其他的对象(例如一个列表对象能够连接到它所包含的对象)。python中从变量到对象的连接称作引用。也就是说,引用是一种关系,以内存中的指针的形式实现。具体而言:变量是一个系统表的元素,拥有指向对象的连接的空间。对象是分配的一块内存,有足够的空间去表示它们所代表的值。引用是自动形...
2018-07-07 19:40:06
10927
原创 将python数据存入redis中,键取字符串类型
使用redis中的字符串类型键来存储一个python的字典。首先需要使用json模块的dumps方法将python字典转换为字符串,然后存入redis,从redis中取出来必须使用json.loads方法转换为python的字典(其他python数据结构处理方式也一样)。如果不使用json.loads方法转换则会发现从redis中取出的数据的数据类型是bytes.运行结果:当使用的python数据...
2018-07-05 18:37:14
9242
原创 json的dumps方法和loads方法
python中的json模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps()和 json.loads() , 要比其他序列化函数库如pickle的接口少得多。首先我们先定义一个python字典如下:运行结果如下:使用json的dumps方法可以将字典转换为字符串。运行结果如下:使用json模块的loads()方法可以将字符串转换为python的字典。...
2018-07-05 18:18:40
2213
原创 在Python中使用mysql之环境搭建
Mysql安装MysqlMysql 两种安装方式:zip方式和msi方式,其中zip方式更难掌握。慕课网有一个安装mysql的课程https://www.imooc.com/video/1803,这里讲的是MSI安装方式,但是由于某些原因,我没有安装成功。MSI安装方式:在mysql官网下载mysql-installer-web-community-5.7.21.0.msi,下载网址为:https...
2018-04-10 13:28:45
1691
原创 zeromq+python安装
pyzmp版本:17.0.0;zeromq版本4.0.4安装教程见:https://blog.csdn.net/yahohi/article/details/76079331首先,通过exe文件安装zeromq,然后安装Python的库pyzmq。exe文件安装Python的库pyzmq使用如下命令安装:pip install pyzmq...
2018-04-10 13:16:04
1978
原创 shell中重定向
Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器。什么是重定向?输出重定向命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向。$echo result > file #将结果写入文件,结果不会在控制台展示,而是在文件中,覆盖写$echo resul...
2018-03-30 16:42:11
133
转载 机试--删除嵌套注释
主要判断:1.如何停止,因为注释和代码都单独成行,所以停止的标志是“}”2.如何得到独立一行:一行结束的标志是'\n',得到'\n'停止就可以3.如何判断是不是嵌套注释:遇到'/'或者'*'都做标记,遇到则加1,若个数只有0个(没有注释)或者4个(一个注释)#include #include#include#include#includeusing na
2017-03-06 20:56:26
432
原创 2007浙大复试机试题代码
#include #includeusing namespace std; int main() { char s1[10];char s2[100];int cnt[10];while(gets(s1)&&strcmp(s1,"#")!=0){gets(s2);memset(cnt,0,sizeof(cnt));int i,j
2017-03-06 20:03:21
180
原创 Mysql模糊查询语法
一.Mysql模糊查询语法支持2种匹配格式1.SQL匹配模式(开发中应用最多的一种)2.正则表达式匹配模式(不推荐使用)1.SQL匹配模式(开发中应用最多的一种)1)使用SQL匹配模式,不能使用操作符=或!= 而是使用like或not like2)使用SQL匹配模式,Mysql提供了2中通配符%表示任意数量的任意字符(其中包括0个)
2016-06-02 13:47:48
740
原创 getimagesizefromstring
array getimagesizefromstring ( string $imagedata [, array &$imageinfo ] )同 getimagesize() 函数。 区别是 getimagesizefromstring() 第一个参数是图像数据的字符串表达,而不是文件名。 $img ='images/banner1.JPG'; $data =f
2016-05-28 16:43:26
537
原创 php函数getimagesize
一.代码段一$img="images/login_bg.png";list($width,$height,$type,$attr) = getimagesize($img);echo $attr;?>上述代码中$img是自定义的图片路径名,login.png是目标图片$width表示图片的宽度$height表示图片的高度$type表示图片的类型$attr
2016-05-28 14:00:36
887
原创 php中的session
一个小程序说明一下全局变量$SESSION和函数session_name[string name]; session_start(); $user= 'username'; // 存储变量的方法一 session_name($user); echo session_name($user); //存储变量的方法二
2016-05-28 13:01:47
211
转载 空指针
任何类型的空指针的值均为0,(char*)0表示一个指向char型对象的空指针。 if(p == (char *) 0 )表示:p是一个char型的指针。p的值如果为0的话,表示无任何指向。NULL是一个宏,是(void*)0整个语句的意思是:判断p的值是否是0,也就是判断p有没有指向哪个区域,如果有,if语句不成立。(char*)0:强制转换,只是为了保证与p的类型保持一
2016-05-22 23:21:13
217
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人