自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode--线性表--数组专题

1. Single Number 1题目描述: given an array of integres, every elements appears twice except for one ,find that single one Note: your algorithm should have a linear runtime complexity,could yo...

2018-09-06 17:33:47 267

原创 542. 01 Matrix

解题思路:采用BFS寻找最短路径。具体操作为: 1. 首先对矩阵进行一次循环,将所有的0压入队列中(寻找最短路径中已知的最短的一部分),将所有不是0 的标记为-1 2. 从队列中弹出一个,对四个方位进行遍历,没有访问过的位置得以更新最短路径,并压入队列 3. 矩阵中所有元素都被访问完即结束 vector<vector<int>> update...

2018-07-30 10:09:33 195

原创 132 Pattern

解题思路:ibool find132pattern(vector<int>& nums) { int n = nums.size(); if(n<=2) return false; stack<int> s; int third = INT_MIN; ...

2018-07-30 09:38:50 204

原创 98. Validate Binary Search Tree

解题思路:验证合法的BST,采用递归的方式,分别检验左子树和右子树是否满足要求即可,但是会出现这种情况: 10 5 15 6 20所以要在递归判断的时候,带上上下限,判断左子树的时候,其上限为root...

2018-07-27 10:23:35 143

原创 179. Largest Number

解题思路:关键问题是确定一个排序规则(mnbool cmp(string str1, string str2){ string strtmp1 = str1 + str2; string strtmp2 = str2 + str1; return strtmp1 > strtmp2;}string largestNumber(vector<int&gt...

2018-07-27 09:59:31 156

原创 523. Continuous Subarray Sum

解题思路一:从长度为2开始循环遍历数组,逐步增加长度来求连续子数组的和,判断其是否满足条件:这里要注意k=0和sum=0的情况。 采用动态规划的方法,在上层循环的基础上再多加一个元素求和即可bool checkSubarraySum(vector<int>& nums, int k){ int sz = nums.size(); vector<...

2018-07-26 16:51:01 187

原创 457. Circular Array Loop

题目大意:确定一个数组中是否有循环。一个循环在一个特定的索引开始和结束,循环中有超过1个元素。循环必须是“向前”或“向后”。解题思路:循环遍历数组,并为每个元素设置标志是否已经访问过。然后根据坐标建立一对一映射,一旦某个达到的坐标已经有映射了,说明环存在,这里有一系列的限制条件:如果next和cur相等,说明此时是一个数字的循环,不符合题意在一个loop中必须同...

2018-07-26 10:57:26 233

原创 15. 3Sum

解题思路:类似于两数和问题 首先对给定数组进行排序 选定第一个数,从后续数中找到和为(0-num[i])的两个数设定三个指针: p,q,r 1. p为选定的第一个数,如果满足条件(后面找到满足条件的两个数)则push到最终结果中,如果不满足,则p++ 。遍历终止为len-2。**(这里要注意,跳过重复数字)----while循环** 2. q指向p+1,r指向len-1。求两...

2018-07-26 10:04:46 119

原创 165. Compare Version Numbers

解题思路: 采用两个指针,分别遍历用’.’分割开打的数据区域进行比较int getVer(string str, int &cur, int len){ int buff = 0; while (str[cur] != '.' && cur < len) { buff = buff * 10 + str[cur] -...

2018-07-25 16:21:58 243

原创 91. Decode Ways

解题思路:采用动态规划来解决:关键是状态转移方程的全面考虑 s[i-1]='2' && s[i]>='1' &&s[i]<='6'int numDecodings(string s) { if (s.empty() || s[0] == '0') return 0; int num2 = 1; int...

2018-07-25 16:03:59 97

原创 127. Word Ladder

解题思路: 求最短的路径长度—-采用BFS,状态变化通过上一层结点中某个字母变化后并且出现在wordlist中(利用一个函数表示是临近状态)int ladderLength(string beginWord, string endWord, vector<string>& wordList) { int dis = 1; int len = wordLis...

2018-07-25 15:18:21 128

原创 468. Validate IP Address

解题思路: 两个函数分别判断是否是IPV4和IPV6,两个函数的思想差不多:逐位遍历,到分隔符,对每一部分做合法检验,最后对总长度(4 or 8)做一个合法检验string validIpAddress(string IP){ if (IsIPv4(IP)) return "IPv4"; else if (IsIPv6(IP)) return...

2018-07-24 17:25:45 120

原创 130. Surrounded Regions

周围区域不应位于边界上,这意味着板边框上的任何“O”都不会翻转到“X”。 任何不在边框上并且未连接到边框上的“O”的“O”将翻转为“X”。 如果它们是水平或垂直连接的相邻单元,则连接两个单元。解决思路:只有边界上是‘O’以及与边界是‘O’相连的不变,其余的‘O’要变为’X’ 对棋盘进行遍历,利用DFS将边界上的以及与边界相连的‘O’先存成’*’ 然后对整个棋盘进行遍历,将依旧是’O’的改为...

2018-07-24 15:44:07 101

原创 166. Fraction to Recurring Decimal

解题思路: 我们每次都作除,然后取整数部分,然后余数*10,继续下去。 在此基础上,要判断小数部分是否重复 借用string来实现在对应重复的位置上插入(,并在结果后面追加) 借用map来实现对重复部分的标记其位置,并做查询#include<stdio.h>#include<string>#include<map>using namespa...

2018-07-24 10:51:14 113

原创 866. Prime Palindrome

解题思路:发现有个规律ABCCBA,ABCDDCBA这种偶数形式的一定不是质数(11除外),一定是11的倍数,所以只要找奇数位长度的数了 直接暴力求解,剪去位数为偶数的分支,以节省时间。bool isPrime(int num){ if (num < 2) return false; for (int i = 2; i <= sqrt(n...

2018-07-23 15:40:43 308

原创 Reverse Words in a String

主要是空格的问题:前导空格,后置空格,以及中间多余的空格。不能够用额外的空间,所以我们只能在原字符串上做修改,而不能另申请 解题思路:先翻转单词,再整体翻转,最后遍历的过程中,将多余的空格删除核心解决问题:最后遍历已经逆转好的字符串时,如何去除多余空格: 前导空格和中间多余空格通过: //如果当前字符是空格,且之前已经加入一个空格,则这个空格跳过s[i] !=' ' || ...

2018-07-22 19:56:36 287

原创 29. Divide Two Integers

题目要求:给定两个整数,要求不用乘除法和取模运算,计算出a/b的值,当结果越界的时候输出INT最大值解题思路:用两个数组暂存b对应的倍数,和相应的系数 long long ABS(long long a){ return a > 0 ? a : -a;}int divide(int dividend, int divisor){ if (divisor ...

2018-07-22 18:45:06 866

原创 LeetCode 8 String to Integer (atoi)

解题思路:) 开始有空格的话,直接++;开始的正负号做一个保存;数字逐位计,碰到非数字的情况,直接返回当前数值;碰到超过上下限的问题,直接返回对应的最大值和最小值int myAuto(char *str){ int flag = 1; //保存符号 int res = 0; int dig; //清理开始的空格 while (*str == '...

2018-07-22 10:36:10 117

原创 机器学习基础

变量,定量变量,定性变量 举例:西瓜的色泽,敲声,大小等 定量:数值型变量 定性:描述型变量区分数量变量,区间变量,连续变量,离散变量 数量变量——离散变量 区间变量——连续变量:可取值数目不再有限,在一定区间内任意取值。etc:人的身高区分名义变量,分类变量,定序变量 定序:文盲半文盲=1,小学=2,初中=3,高中=5……(受教育程度) 名义变量:性别:男,女(...

2018-06-04 17:35:12 514

转载 matlab使用

一、数据的导入和导出(Excel和.txt)①Excel文件的导入num=xlsread(filename) 读取由filename指定的Excel文件中第1个工作表中的数据, 返回一个双精度矩阵num。输入参数filename是由单引号括起来的字符串。num=xlsread(filename,-1)这种调用会弹出一个提示界面,提示用户选择Excel工作表中的数据区域。在某个工作...

2018-04-22 23:14:07 201

原创 搜索

一、暴力求解特别注意时间复杂度(枚举情况个数)#define _CRT_SECURE_NO_DEPRECATE#include<stdio.h>int main(){ int n; while (scanf("%d", &n) != EOF) { for (int i = 0; i <= 100; i++) ...

2018-04-07 11:18:44 120

原创 图论

为了使用vector,需要在C++源文件添加#include<vector>using namespace std;用来表示一条边struct Edge{ int nextNode; //下一个结点编号 int cost;// 该边的权重};为每个结点都创建一个单链表vector<Edge> edge[N];为这些单链表添加和...

2018-04-06 11:31:42 228

原创 数学问题---四

一、如何快速求得 a的b次方将b分解成若干个 2^k的和且分解的个数最小———求b得二进制数 例如:求2^31: 31的二进制表示为 11111,即拆2^31次为 2的0次……的乘积 题目一: 求 A^B的最后三位表示的整数 注意: 仅保存最后三位数 从b的最低位开始依次求得b的各个二进制位,在当前二进制位位1的情况下将a累乘到ans上。在完成本位操作后对a求其平方计算下一位二进制...

2018-04-06 11:27:59 354

原创 数学问题(三)

一、最大公约数就是求 a%c =0,b%c =0的最大正整数: 求解过程: ①:若a,b全部为0.则他们的最大公约数不存在 ②:若 a,b其中之一为0,则他们的最大公约数为 a,b中非零的那个 ③:若a,b都不为0,则使新 a=b;新的 b = a%b 然后重复该过程———-欧几里得算法 题目一: 输入两个正整数,求其最大公约数#include<stdio.h>...

2018-04-04 17:01:16 347

原创 数学问题(二)

一、进制转换从m进制转换到n进制 : ①从m进制转换到十进制 ②从十进制转换到n进制 十进制转换到其他进制x = b0* 2^0 +b1*2^1……应用上章数位拆解的方法得到 b0,b1,b2:x%2=b0这样就得到了该数字由二进制表示时的最低数位。然后不断对x做整除,除2,同样可以将高位数字向低位移动 x/2 = b1*2^0 +b2*2^1……将二进制...

2018-04-03 16:29:15 179

原创 数学问题

一、%运算符的使用避免出现负余数:采用将余数加上出书再对除数求一次余即可。 r' = (r+b)%b;在大数求模中,为了避免溢出: (a*b)%c = (a%c * b%c)%c (a+b)%c = (a%c + b%c)%c例一: 还是A+B 在求A+B之前要判断一下,A和B的后K位数字是否相等,相等的话,输出-1#include <stdio.h&...

2018-04-03 09:45:53 177

原创 二叉树

主要是对二叉树的遍历,构造,还原题目一:二叉树的遍历 给定二叉树的前序遍历序列和中序遍历序列,求其后序遍历序列struct Node{ Node *lchild; Node *rchild; char c;}Tree[50]; //静态内存分配数组利用分配数组元素给相应的节点实现内存分配,这是对内存分配较为简单的实现方法int loc; //静态...

2018-04-01 19:38:09 107

原创 哈弗曼树

给定N个节点和他们的权值,以他们为叶节点构造一条带权路径长度和最小的二叉树,该二叉树即为哈夫曼树 哈夫曼树的求法将所有节点都放入集合K若集合中的节点个数小于2,取出其中权值最小的两个,将父节点放入K若集合K中只有一个节点,该节点即为构造出的哈夫曼树的根节点 所有构造得到的中间节点(即哈夫曼树上非叶子节点)的权值和即为该哈夫曼树的带权路径和 为了方便快捷的求得集合K中权值最小的两个元...

2018-04-01 19:06:45 164

原创 栈的应用

为了使用栈,得加上:#include<stack>using namespace std题目一(典型题目)括号匹配问题 输出原理字符串,并在下面标出不能匹配的括号。不能匹配的左括号用‘$’标记,不能匹配的右括号用’?’标记 我们按照从左至右的顺序遍历字符串,将遇到的左括号都放入堆栈中等待匹配;若在遍历过程中遇到一个右括号:若堆栈非空,则栈顶左括号与之匹配;相反...

2018-03-31 17:05:07 131

原创 贪心算法

题目一:(典型题目)购买商品 有m元钱,n种物品;每种物品有j磅,总价值f元。(可以使用0.3f购买0.3j物品) 输入:M,N 以及N 种物品的重量和总价格 输出:最多能买到多少磅物品 思路:每次购买剩余物品中性价比最高的物品 代码:#define _CRT_SECURE_NO_DEPRECATE/*贪心算法:购买最多的商品*/#include<stdio.h...

2018-03-28 16:55:59 331

原创 Hash的应用

题目一:统计同成绩学生个数 代码:#define _CRT_SECURE_NO_DEPRECATE/*统计同成绩学生人数成绩分数为0到100之间的一个整数*/#include<stdio.h>int main(){ int n; int x, target; int grade[101] = { 0 }; while (sca...

2018-03-27 17:34:12 193

原创 日期类问题

题目一 求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 20110412 20110422 输出: 11 思路:将他们与特定的日期的天数差相减。预处理出所有日期与远点日期之间的天数差并保存起来。 日期类要特别注意—–闰年 代码:#define _CRT_SECURE_NO_DEPRECATE/*日期差值*/#include<...

2018-03-26 17:57:32 128

原创 排序问题

题目一:对输入的n个数进行排序并输出 代码:/*采用冒泡排序*/#define _CRT_SECURE_NO_DEPRECATE#include<stdio.h>int main(){ int n; int buf[101]; while (scanf("%d", &n) != EOF) { for (int...

2018-03-26 15:01:52 154

原创 树的遍历

树的深度优先搜索和广度优先搜索树的深度优先搜索: 前序遍历:根-左-右 中序遍历:左-根-右 后序遍历:左-右-根循环将根节点的左子树压入栈中(并visit),直到没有左结点。将栈顶结点弹出,并遍历右子树 代码:class Solution {public: vector<int> preorderTraversal(TreeNod...

2018-03-20 18:23:09 99

原创 206. Reverse Linked List

题目描述:Reverse a singly linked list.click to show more hints. Hint:A linked list can be reversed either iteratively or recursively. Could you implement both?解题思路:采用迭代的方式: 循环将当前节点移动到前一个节点的前面...

2018-03-17 15:50:36 82

原创 205. Isomorphic Strings

题目描述:Given two strings s and t, determine if they are isomorphic.Two strings are isomorphic if the characters in s can be replaced to get t.All occurrences of a character must be replaced with a...

2018-03-17 12:47:55 99

原创 204. Count Primes

题目描述:Description:Count the number of prime numbers less than a non-negative number, n.解题思路:使用见埃拉托色尼筛法。 一个数的n倍一定是合数代码:class Solution { public int countPrimes(int n) { //这里...

2018-03-16 12:46:25 101

原创 Remove Linked List Elements

题目描述:Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1 –> 2 –> 3 –> 4 –> 5 ...

2018-03-16 12:28:19 85

原创 202. Happy Number

题目:Write an algorithm to determine if a number is “happy”.A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squa...

2018-03-15 14:57:40 92

原创 198. House Robber

题目:You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent ...

2018-03-15 14:30:45 99

空空如也

空空如也

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

TA关注的人

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