
算法
恋上豆沙包
这个作者很懒,什么都没留下…
展开
-
剑指 Offer II 025. 链表中的两数相加
给定两个 非空链表 l1和 l2 来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。可以假设除了数字 0 之外,这两个数字都不会以零开头。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {}.原创 2022-04-15 00:31:20 · 223 阅读 · 0 评论 -
leetcode 48 旋转矩阵
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。class Solution {public: void rotate(vector<vector<int>>& matrix) { auto temp_matrix= matrix; int n=matrix.size();原创 2022-01-13 15:40:46 · 179 阅读 · 0 评论 -
leetcode 141 环形链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCycle(ListNode *head) { set<ListNode*> m; .原创 2021-06-16 00:57:02 · 180 阅读 · 0 评论 -
浮点数 向上取整
题目描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。输入描述:5.5输入一个正浮点数值输出描述:6输出该数值的近似整数值示例1输入复制5.5输出复制6int main(){ double dd; while(cin>>dd){...原创 2019-12-22 18:49:33 · 2083 阅读 · 0 评论 -
leetcode 543 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。class Solution {...原创 2019-12-12 23:37:26 · 134 阅读 · 0 评论 -
leetcode 206 反转链表
class Solution {public: ListNode* reverseList(ListNode* head) { if( head== nullptr ) return head; if( head->next == nullptr) return head ListN...原创 2019-12-12 22:09:47 · 148 阅读 · 0 评论 -
leetcode 1103 分糖果2
排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n+ 1 颗糖果,第二个小朋友 n+ 2 颗,依此类推,直到给最后一个小朋友 2 * n颗糖果。重复上述过程(每次都比上一次多...原创 2019-12-12 17:52:32 · 195 阅读 · 0 评论 -
leetcode 160 相交链表
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if( headA== nullptr || headB== nullptr ) return nullptr; ListNode* pA= headA; ListNode* pB= headB...原创 2019-12-11 00:24:07 · 120 阅读 · 0 评论 -
leetcode 283 移动零
void moveZeroes(vector<int>& nums) { stack<int> ss; int zerocnt=0; for(int i=0; i< nums.size();i++){ if(nums[i]!=0){ ss.push(num...原创 2019-12-10 17:50:12 · 126 阅读 · 0 评论 -
leetcode 118 杨辉三角
vector<vector<int>> generate(int numRows) { vector<vector<int> > r; if(numRows==0) return r; vector<int> c; c.push_back(1); ...原创 2019-12-09 23:51:50 · 129 阅读 · 0 评论 -
leetcode 746. 使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。int minCostClimbingStairs(vector<int>& ...原创 2019-12-09 20:52:44 · 130 阅读 · 0 评论 -
leetcode 518 零钱兑换
class Solution {public: int change(int amount, vector<int>& coins) { int len = coins.size(); vector<vector<int>> dp(len + 1, vector<int>(amount + 1, 0...原创 2019-12-05 22:36:15 · 254 阅读 · 1 评论 -
leetcode 106. 从中序与后序遍历序列构造二叉树
class Solution {public: TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) { int len= postorder.size(); if(len==0) return NULL; ...原创 2019-12-05 19:39:50 · 158 阅读 · 0 评论 -
leetcode 70 爬楼梯
class Solution {public: int climbStairs(int n) { if(n==1) return 1; vector<int> dp(n+1); dp[1]=1; dp[2]=2; for (int i = 3; i <=n ; ++...原创 2019-12-05 19:37:26 · 130 阅读 · 0 评论 -
leetcode 105 从前序与中序遍历序列构造二叉树
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { if (preorder.size() == 0) return NULL; TreeNode *pRoot = new TreeNode(preorder[0]);...原创 2019-12-05 19:27:43 · 167 阅读 · 0 评论 -
c++ 大端小端测试
bool IsBigEnd(){ short int a = 0x1122; char b= *(char*)&a; if (b==0x11){ return true; } return false; }小端:数的低位对应内存的低位为小端(低对低,高对高)大端:数的...原创 2019-11-27 19:33:32 · 315 阅读 · 0 评论 -
leetcode 804 唯一摩尔斯密码词
int uniqueMorseRepresentations(vector<string>& words) { vector<string> dict{".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","-...原创 2019-11-26 22:41:20 · 238 阅读 · 1 评论 -
leetcode 11 盛水最多的容器
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。原创 2019-11-23 17:47:55 · 174 阅读 · 1 评论 -
leetcode 344 反转字符串
void reverseString(vector<char>& s) { for(int i=0;i<s.size()/2;i++) { char temp=s[i]; s[i]=s[s.size()-1-i]; s[s.size()-1-i]=temp; ...原创 2019-11-23 17:45:46 · 138 阅读 · 0 评论 -
leetcode 1025 除数博弈
bool divisorGame(int N) { return N%2==0; }原创 2019-11-23 17:43:47 · 218 阅读 · 0 评论 -
leetcode LCP1 猜数字
int game(vector<int>& guess, vector<int>& answer) { int cnt=0; for(int i=0;i< guess.size();i++) { if(guess[i]==answer[i]){ c...原创 2019-11-23 17:42:36 · 199 阅读 · 0 评论 -
leetcode 104 二叉树的最大深度
int maxDepth(TreeNode* root) { if(!root) return 0; int left = maxDepth(root->left); int right = maxDepth(root->right); return (left>right? left:ri...原创 2019-11-23 17:40:22 · 146 阅读 · 0 评论 -
SQRT 最快
float InvSqrt(float x){ float xhalf = 0.5f*x; int i = *(int*)&x; // get bits for floating VALUE i = 0x5f375a86- (i>>1); // gives initial guess y0 x = *(float*)&i; // convert bits B...原创 2019-11-23 17:31:10 · 287 阅读 · 0 评论 -
leetcode 198 打家劫舍 c++
int rob(vector<int>& nums) { if(nums.size()==0) return 0; vector<int> dp(nums.size(),0); if(nums.size()==1) return nums[0]; if(...原创 2019-11-23 17:29:54 · 179 阅读 · 0 评论 -
合并2个有序链表为一个有序链表
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1== nullptr) return l2; if(l2==nullptr) return l1; ListNode* head= nullptr; if(l1->...原创 2019-11-23 17:27:14 · 128 阅读 · 0 评论 -
C++ LRU实现
class LRUCache {public: LRUCache(int capacity) { this->cap=capacity; } int get(int key) { map<int,int>::iterator it=m.find(key); if(it==m.end()) ...原创 2019-11-23 17:26:12 · 164 阅读 · 0 评论 -
最小生成树(Kruskal和Prim算法)
关于图的几个概念定义:连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图。强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图。连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫做连通网。生成树:一个连通图的生成树是指一个连通子图,它含有图中全部n...转载 2019-10-29 13:58:15 · 164 阅读 · 0 评论 -
跳表
#include<iostream>#include <math.h>using namespace std;//E是查询值,K是返回值template<class E,class K>class SkipNode{ public: SkipNode(int size){link=new SkipNode<E,K&g...原创 2019-10-29 11:49:25 · 149 阅读 · 0 评论 -
Dijkstra算法(最短路径算法)
import heapqimport mathgraph={ "A":{"B":5,"C":1}, "B":{"A":5,"C":2,"D":1}, "C":{"A":1,"B":2,"D":4,"E":8}, "D":{"B":1,"C":4,"E":3,"F":6}, "E":{"C":8,"D":3}, "F":{"D":6}}d...原创 2019-10-26 19:46:35 · 311 阅读 · 0 评论 -
01背包问题
//// Created by jarvis on 2019/10/25.//#include <iostream>using namespace std;#define N 6#define W 21int B[N][W]={0};int w[6]={0,2,3,4,5,9};int v[6]={0,3,4,5,8,10};void knapsack()...原创 2019-10-25 23:38:02 · 122 阅读 · 0 评论 -
堆排序
// 堆需要满足的条件// 需要是一个完全二叉树。// 父节点,要大于子节点。#include <iostream>using namespace std;void swap(int tree[],int a,int b){ int c= tree[a]; tree[a] = tree[b]; tree[b] =c;}// 堆化// p...原创 2019-10-24 18:16:44 · 130 阅读 · 0 评论 -
求素数
#include <iostream>using namespace std;void FilterPrime(int n){ bool* isPrimes = new bool[n+1]; for(int i=2;i<=n;++i) isPrimes[i] = true; isPrimes[2] = true; for(int j=2;j<=n;++j...转载 2018-04-17 14:24:08 · 201 阅读 · 0 评论