03 2019 档案
摘要:1 #include "000库函数.h" 2 3 //一想到又是遍历 4 class Solution { 5 public: 6 int maxSubArray(vector& nums) { 7 int res=nums[0]; 8 for (int i = 0; i sum ? res : sum; 11 ...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //使用回溯法来计算 5 //经典解法为回溯递归,一层一层的向下扫描,需要用到一个pos数组, 6 //其中pos[i]表示第i行皇后的位置,初始化为 - 1,然后从第0开始递归, 7 //每一行都一次遍历各列,判断如果在该位置放置皇后会不会有冲突,以此类推, 8 //当到最后一行的皇后放好后,一种解法就...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 5 //使用折半算法 牛逼算法 6 class Solution { 7 public: 8 double myPow(double x, int n) { 9 if (n == 0)return 1; 10 double res = 1.0; 11 for ...
阅读全文
摘要:1 function CrossPoint( ) 2 %% 求两条直线的交点坐标 3 x1 = [7.8 8]; 4 y1 = [0.96 0.94]; 5 %line2 6 x2 = [8.25 8.25]; 7 y2 = [0 0.99]; 8 %fit linear polynomial 9 p1 = polyfit(x1,y1,1); 10 p2 = polyf...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //笨方法,循环,遍历 5 //先将每个字母进行遍历,并给排序,这样就可以确定出有几种字符串,然后就可以开辟空间了 6 //然后给每个字符串进行找位子 7 //笨方法,时间久 864ms ,内存大17.4M 8 class Solution { 9 public: 10 vector> g...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //找位置规律 4 //先不按照规则,使用另一个矩阵 5 class Solution { 6 public: 7 void rotate(vector>& matrix) { 8 vector >v = matrix; 9 int n = matrix.size()...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //使用排序,感觉在作弊,但是题目没说不可以 5 //36ms 6 class Solution { 7 public: 8 vector> permuteUnique(vector& nums) { 9 vector>res; 10 if (nums.emp...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //使用排序,感觉在作弊,但是题目没说不可以 5 //24ms 6 class solution { 7 public: 8 vector> permute(vector& nums) { 9 vector>res; 10 if (nums.empty())r...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //考虑当前最远能到什么地方,例如2, 3, 1, 1, 4, 5 //首先只考虑a[0] = 2,即最远可以到a[2],然后从1到2中找下一个可到的最远点, 6 //即a[1]可以到达a[4],此时找到结果,步数记录为2。若接着考虑, 7 //下一次应该从3 - 4里面找一个最远即a[4]可达a[8](4 + 4), ...
阅读全文
摘要:影响排序性能的要素: 时间性能; 辅助空间 算法的复杂度 简单排序【n^2】 算法思想: 第一趟: 从第一个记录开始,通过n-1次关键字比较,从n个记录中选出最小的并和第一个记录交换; 第二趟: 从第二个记录开始,通过n-2次关键字比较,从n -1个记录中选出最小的并和第二个记录交换; 冒泡排序【n
阅读全文
摘要:/*********************讲解后期补充*****************/ 先上代码
阅读全文
摘要:/*自己看了半天也没看懂代码,下次再补充说明*/ 解释: 平衡二叉树(Self-Balancing Binary Search Tree 或Height-Balanced Binary Search Tree),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。 实现原理: 平衡二
阅读全文
摘要:讲解: 总结一句话: 小的左边,大的放右边。 特点: 二叉排序树(Binary Sort Tree),又称为二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树。 若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的
阅读全文
摘要:/*********************************迪杰斯卡特(Dijstra)**************************/ 讲解: 1、Dijkstra算法介绍 算法特点: 迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径
阅读全文
摘要://此为博客讲解//p串中星号的位置很重要,用jStar来表示,还有星号匹配到s串中的位置,//使用iStart来表示,这里 iStar 和 jStar 均初始化为 - 1,表示默认情况下是没有星号的。//然后再用两个变量i和j分别指向当前s串和p串中遍历到的位置。////开始进行匹配,若i小于s串
阅读全文
摘要:/*****************************普里姆(Prim)算法***************************/ /* 此为无向图 Prim算法思想很简单,依托临接矩阵 就是从顶点0开始,依次比较起始点到下一个点的最短路径,并将其更新 然后以新的点为起始点,再找到该点能够到
阅读全文
摘要:1 #include"000库函数.h" 2 //一点头绪都没有 3 //然后就自己按自己的意思来一遍 4 //好像没有用算法 5 //16ms,让我激动一把 6 7 class Solution { 8 public: 9 int trap(vector& height) { 10 if (height.size() = s) {...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //先排序,然后找值 5 //自己的解法 12ms 6 //class Solution { 7 //public: 8 // int firstMissingPositive(vector& nums) { 9 // sort(nums.rbegin(),nums.rend());//对数组进行逆...
阅读全文
摘要:1 #include "000库函数.h" 2 //无向图 3 4 #define MAXSIZE 9 /* 存储空间初始分配量 */ 5 #define MAXEDGE 15 6 #define MAXVEX 9 7 #define INFINITY 65535 8 9 typedef int Status; /* Status是函数的类型,其值是...
阅读全文
摘要:1 #include "000库函数.h" 2 //无向图 3 4 typedef char VertexType; /* 顶点类型应由用户定义 */ 5 typedef int EdgeType; /* 边上的权值类型应由用户定义 */ 6 7 #define MAXSIZE 9 /* 存储空间初始分配量 */ 8 #define MAXEDGE 15 ...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //第一感觉使用回溯比较快 4 //96ms 5 6 7 class Solution { 8 public: 9 vector> combinationSum2(vector& candidates, int target) { 10 vector>R; 11 sort(cand...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //第一感觉使用回溯比较快 4 //好激动,第一次使用回溯成功 96ms,37.1M 5 6 7 class Solution { 8 public: 9 vector> combinationSum(vector& candidates, int target) { 10 v...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //自解,就遍历数数 8ms 5 class Solution { 6 public: 7 string countAndSay(int n) { 8 if (n == 0)return ""; 9 string str = "1"; 10 string s; ...
阅读全文
摘要://跟此题类似的有 Permutations 全排列,Combinations 组合项, N - Queens N皇后问题等等,//其中尤其是跟 N - Queens N皇后问题的解题思路及其相似,对于每个需要填数字的格子带入1到9,//每代入一个数字都判定其是否合法,如果合法就继续下一次递归,结束
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 //题目贼恶心,竟然没有说出A存在的规律!!!!! 7 //首先,必须要有PAT存在,且不能有其他字符 8 //其次P与T中间A的个数乘以P之前的个数==T之后的A的个数!!!!!!!!! 9 int main() { 10 ...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //一看,没想出什么好法子,就遍历了 4 //最重要的是如何比较小九宫格的数据 5 //44ms 6 class Solution { 7 public: 8 bool isValidSudoku(vector>& board) { 9 for (int i = 0; i j; --k) 13 ...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //第一眼,感觉没什么考虑算法的,就普通做就好了 4 //又因为是有序 的,故使用二分法最好了【别再太真爱用遍历,傻子才会一上来就遍历】 12ms 5 class Solution { 6 public: 7 int searchInsert(vector& nums, int target) { 8 ...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //使用二分法查找到目标值的位置,然后分两边再查找出起始位置和终止位置 4 //16ms 不是严格意义上的logn的复杂度 5 class Solution { 6 public: 7 vector searchRange(vector& nums, int target) { 8 vectorv =...
阅读全文
摘要:1 #include "000库函数.h" 2 3 //自解 68ms 弱爆了 4 //先找到最大值,然后确定目标值在最大值的左边还是右边 5 //最后使用折中寻找法,找到目标值的位置,此方法应该满足复杂度不超过logn的要求 6 class Solution { 7 public: 8 int search(vector& nums, int ta...
阅读全文
摘要:题目描述: 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 示例 2: 这里我们还是借助栈来求解,需要定义个start变量来记录合法括号串的起始位置,我们遍历字符串,如果遇到左括号,则将当前下标压入栈,如果遇到右括号,如果当前栈为空,则将下一个坐标位置
阅读全文
摘要:自解法 20ms使用一遍法,从右向左依次比较相邻两个数字,看其是否为降序排列[降序排列无更大的排列了]当出现升序排列时,只需要将此处的数字与其右端比其大一点点的数进行交换,再将【i-1】右端的数进行升序排列就得到比目前大一点的排列了。如图所示 //使用C++的排列函数next_permutation
阅读全文
摘要:汉诺塔问题是一个递归的经典问题。 问题描述: 有x,y,z三根柱子,在x柱子上有按照大在下,小在上的规则,放着64个套筒,现在要将64个套筒借助柱子y移到柱子z上,且每次只能移动一个套筒,每个柱子上的套筒每时每刻只能按照大套筒在下面,小套筒在上面的规则放着,请问一共要移动多少次才能完成该项任务? 解
阅读全文
摘要:1.排列:全排列n! 使用next_permutation函数 输入任意一个字符串,输出其字典序的全排列 递归法 设一组数p = {r1, r2, r3, … ,rn}, 全排列为perm(p),pn = p – {rn}。则perm(p) = r1perm(p1), r2perm(p2), r3p
阅读全文
摘要:1 #include "000库函数.h" 2 3 //自解; 4 //这道题 的突破口就是找到words的组合情况 5 //然后将所有组合一一查找是否存在子串,还要对答案去重、查找相同子串不同位置出现!!! 6 //超出时间限制^_^,悲催,做了一个小时 7 class Solution { 8 public: 9 vector findSubst...
阅读全文
摘要:1 #pragma once 2 #include "000库函数.h" 3 /******************自解***********************/ 4 //虽然很快通过,但不满足题中不允许使用除法的要求 36ms 5 class Solution { 6 public: 7 int divide(int dividend, int d...
阅读全文
摘要:1 #pragma once 2 #include "000库函数.h" 3 4 /*********************自解**************/ 5 //使用算法中的find 12ms 6 class Solution { 7 public: 8 int strStr(string haystack, string needle) { 9 ...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 //自解1: 5 class Solution { 6 public: 7 int removeElement(vector& nums, int val) { 8 if (nums.size() == 0)return 0; 9 int j = 0; 10 fo...
阅读全文
摘要:1 #include "000库函数.h" 2 3 ////////////自解1:逐个筛选在赋值,时间最短36ms 4 class Solution { 5 public: 6 int removeDuplicates(vector& nums) { 7 if (nums.size() v; 9 v.push_back(nums[0])...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 5 struct ListNode { 6 int val; 7 ListNode *next; 8 ListNode(int x) : val(x), next(NULL) {} 9 }; 10 /************************自己解答*********...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 5 6 struct ListNode { 7 int val; 8 ListNode *next; 9 ListNode(int x) : val(x), next(NULL) {} 10 }; 11 //注意,该链表是无头结点,为了不乱,自己加了一个头结点 12 class Soluti...
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 5 struct ListNode { 6 int val; 7 ListNode *next; 8 ListNode(int x) : val(x), next(NULL) {} 9 }; 10 //自己解法,比较笨,为用算法,即将所有元素合并再排序 11 ListNo...
阅读全文
摘要:喜欢一个人 始于颜值,陷于才华; 忠于人品,痴于身体; 迷于声音,醉于深情; 最后,却,折于物质,败于现实。 这世间万千滋味,早有先人尝遍; 读过多少警示名言; 我们还是会不由自主的重蹈覆辙; 走他们走过的路; 受他们受过的苦。 you don't leave me, I'll be by your
阅读全文
摘要:常见的输入问题: 1、直接用cin输入(当然可以使用cout直接输出): 1)string s; cin >> s; //只接收回车键和空格前面所输入的字符!!!!! 一旦输入空格,cin将空格视为回车键,将会将后面的字符赋予后续有输入cin函数的变量中,如下面的a,故一定确保输入无空格!! 2)c
阅读全文
摘要:1 #include "000库函数.h" 2 3 4 5 6 //使用回溯法,当左括号数量大于右括号数量,则可以放置右括号 7 void recall(vector&bracket, string s, int left, int right) {//bracket使用引用,确保其变化会被保留 8 if (left > right)return; 9 ...
阅读全文
摘要://此题所谓的排序,并不是要把合并后的数字排序,而是将l1,l2的数字合并 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}//构造函数 }; //使用小学生插队思想,多次遍历链表进行排序,不推荐 ListNode* mergeTwoList...
阅读全文
摘要://使用栈的思想,先进后出原则,因为出来的必须是与目前的括号形成一对 bool isValid(string s) { if (s.size() == 0)return true; if (s.size() == 1)return false; stackTemp; for (int i = 0; i < s.size(); ++i) { if (s[i] == '(' || s[...
阅读全文
摘要:1 //使用两次遍历 2 ListNode* removeNthFromEnd(ListNode* head, int n) { 3 if (!head->next) return NULL; 4 int len = 0; 5 ListNode *p = head; 6 while (p) { 7 p = p->next; 8 ...
阅读全文
摘要:1 //使用三数之和中的双指针的思想,固定外围两个数 2 vector> fourSum(vector& nums, int target) { 3 sort(nums.begin(), nums.end()); 4 vector>Res; 5 if (nums.size() = 3;) { 7 for (int a = 0; a targe...
阅读全文
摘要:1、要求 声明定义处调用约定必须相同 int __stdcall add(int a, int b); int __stdcall add(int a, int b) { return a + b; } 2、函数调用过程 假设:A为调用者,B为被调者;A{B}; 函数调用过程可以这么描述: (1)先
阅读全文