算法
Buerle
985硕/C++/Golang
展开
-
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
class Solution {public: vector<int> exchange(vector<int>& nums) { int low=0,high=nums.size()-1; while(low<high) { while(low<high && nums[low]%2==1) low++; whil...原创 2020-07-08 13:48:20 · 95 阅读 · 0 评论 -
剑指offer-top-k问题-优先级队列
class Solution {public: vector<int> getLeastNumbers(vector<int>& arr, int k) { vector<int>v; if(k==0)return v; //大顶堆 priority_queue<int, vector<int> , less<int> &...原创 2020-07-07 20:23:53 · 157 阅读 · 0 评论 -
回溯法求解路径
class Solution {public: vector<string>v; void InOrder(TreeNode*root,vector<int>&path) { if(root) { path.push_back(root->val); //到叶子结点 if(root->left==NULL&&...原创 2020-07-06 17:17:28 · 223 阅读 · 0 评论 -
乐观锁和 MVCC 的区别?
在数据库中,并发控制是指在多个用户/进程/线程同时对数据库进行操作时,如何保证事务的一致性和隔离性的,同时最大程度地并发。当多个用户/进程/线程同时对数据库进行操作时,会出现3种冲突情形:读-读,不存在任何问题 读-写,有隔离性问题,可能遇到脏读(会读到未提交的数据) ,幻影读等。 写-写,可能丢失更新要解决冲突,一种办法是是锁,即基于锁的并发控制,比如2PL,这种方式开销比较高,而且无法避免死锁。多版本并发控制(MVCC)是一种用来解决读-写冲突的无锁并发控制,也就是为事务分配单向.原创 2020-07-05 15:41:25 · 238 阅读 · 0 评论 -
leetcode题解-全排列
class Solution{public: vector<vector<int>> result; vector<bool> flag; void backfind(int root, vector<int> nums, vector<int> &temp) { temp.push_back(nums[root]); flag[root] = true; ...原创 2020-07-04 11:24:35 · 159 阅读 · 0 评论 -
leetcode-剑指offer-把数组排成最小的数-自定义排序
class Solution {public: static bool cmp(string s1,string s2) { if(s1+s2<s2+s1)//比较 return true; else return false; } string minNumber(vector<int>& nums) { vector<string>v; ...原创 2020-07-03 10:24:09 · 115 阅读 · 0 评论 -
leetcode-镜像树-双百解法
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ //没影响 前序和后序遍历class Solution {public: void reverse(...原创 2020-07-01 13:31:49 · 136 阅读 · 0 评论 -
数组全排列C++实现代码
void full_permutation(vector<char> a, int index) { if (index == a.size() - 1) { for (int i = 1; i <= a.size(); i++) { cout <...原创 2020-02-08 12:47:05 · 651 阅读 · 0 评论 -
堆排序(HeapSort)C++实现
#include <iostream>#include <bits/stdc++.h>using namespace std;void print(vector<int> v){ for(int i=0;i<v.size();i++) cout<<v[i]<<" ";}void sift(int...原创 2020-02-05 10:34:06 · 324 阅读 · 0 评论 -
神经网络优化器对比
1.SGD2.BGD3.MBGD:.批量梯度下降:每次更新使用了所有的训练数据,最小化损失函数,如果只有一个极小值,那么批量梯度下降是考虑了训练集所有的数据,是朝着最小值迭代运动的,但是缺点是如果样本值很大的话,更新速度会很慢。.随机梯度下降:在每次更新的时候,只考虑一个样本点,这样会大大加快训练数据,也恰好是批量梯度下降的缺点,但是有可能由于训练数据的噪声点较多,那么...原创 2019-08-14 19:48:25 · 560 阅读 · 0 评论 -
leetcode中层次遍历(LevelOrder)的应用
二叉树的层次遍历,是一种很直观的遍历二叉树的方法,应用C++STL的队列很容易实现出来,笔者给出层次遍历(LevelOrder)的代码://LevelOrder/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *...原创 2019-01-10 15:23:24 · 2600 阅读 · 0 评论 -
线索二叉树的线索化的实现以及遍历的实现
线索二叉树:(threaded binary tree):n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前驱和后继结点的指针【注】已知二叉树的节点个数n,那么边的个数n-1。现在给出树节点的定义:class TreeNode{public: TreeNode(int x) { v...原创 2018-07-25 14:03:26 · 314 阅读 · 0 评论 -
归并排序
#include<iostream>using namespace std;#include<vector>void merge(vector<int>&a,int low,int middle,int high){ vector<int>b;//辅助数组 for(int i=0;i<a.size();i++) b....原创 2018-06-30 20:03:54 · 84 阅读 · 0 评论