Algorithm
文章平均质量分 60
浮生勿语
这个作者很懒,什么都没留下…
展开
-
回溯算法总结
常用回溯算法题目是排列问题、组合问题、皇后问题首先给出多叉树遍历框架和回溯算法的核心框架,回溯算法的知识点总结如下:1、回溯算法本身是一种暴力穷举算法2、穷举的过程就是遍历一个多叉树的过程3、回溯算法的代码框架和多叉树遍历的代码框架相似排列问题(1)题目链接:Leetcode46 全排列问题本题可以通过交换数组元素的位置来做,这个部分在蓝桥杯总结过程中已经用过了。另一种是通过遍历树来来解决,本题的一个遍历树是这样的ref[1]:图源代码是这样的std::v转载 2021-12-07 16:00:14 · 3143 阅读 · 0 评论 -
有序数组的去重问题即C++ stl中unique函数源码解析
问题描述:给定一个排序数组,需要在原地删除重复出现的元素,使得每个元素只出现一次,还回移除数组的新长度,如[0,0,1,1,2]==>[0,1,2,1,2],函数还回新的长度3解决方法:①借助unique函数,unique函数是C++ stl中的函数,接下来会讲解它的原理和作用int removeDuplicatesI(vector<int> &nums) {...原创 2019-12-13 10:37:34 · 753 阅读 · 0 评论 -
网易笔试题:整理房间
题目描述:又到了周末,小易的房间乱得一团糟。他希望将地上的杂物稍微整理下,使每团杂物看起来都紧凑一些,没有那么乱。地上一共有n团杂物,每团杂物都包含4个物品。第i物品的坐标用(ai,bi)表示,小易每次都可以将它绕着(xi,yi)逆时针旋转90^ \circ90∘,这将消耗他的一次移动次数。如果一团杂物的4个点构成了一个面积不为0的正方形,我们说它是紧凑的。因为小易很懒,所以他希望你...原创 2019-08-27 09:35:19 · 893 阅读 · 0 评论 -
使用数组模拟最小堆的建立
class MinHeap {public: MinHeap(int arr[],int n) {//构造函数,通过一个数组建堆 heap = new int[n]; for (int i = 0; i < n; i++) {heap[i] = arr[i];} int currentPos = (n - 2) / 2;//找最初调整位置,最后分支节点,注意n是数组的大小,...原创 2019-08-13 23:30:23 · 548 阅读 · 0 评论 -
leetcode接雨水 trapping rain water 使用双指针
和方法2相比,我们不从左和从右分开计算,我们想办法一次完成遍历。从动态编程方法的示意图中我们注意到,只要right_max[i]>left_max[i],即右部的最大值大于左部的最大值,积水高度将有left_max决定,类似的只要left_max[i]>right_max[i],即左部的最大值大于右部的最大值,积水高度将由right_max决定。所以我们可以认为如果一端有更高的...转载 2019-08-17 14:28:37 · 242 阅读 · 0 评论 -
leetcode-504 十进制转七进制
//测试:100--->202 -7---->-10 string convertToBase7(int num) { int res=0; string s; if(num<0){ s="-"; } int n=abs(num); vector<int> v; while(n!=0){ in...原创 2018-10-13 00:44:20 · 895 阅读 · 0 评论 -
Leetcode-7 反转整数
public int reverse(int x){ long result=0; while(x!=0){ result=result*10+x%10; x=x/10; if(result>Integer.MAX_VALUE||result<Integer.MIN_VALUE){ return ...原创 2018-10-07 13:27:51 · 88 阅读 · 0 评论 -
leetcode-6 字符串Z字形转换
class Solution {public: string convert(string s, int numRows) { int length=s.length(); if(length==0||length==1||numRows==0||numRows==1){return s;} string *nRowString=new string[numRows];...原创 2018-10-07 14:27:01 · 144 阅读 · 0 评论 -
leetcode-322 硬币找零问题
我的版本: int coinChange(vector<int>& coins, int amount) { if(coins.size()==0){return -1;} int *dp=new int[amount+1]; for(int i=0;i<amount+1;i++){ dp[i]=amount+1;//特别注意这里的取值,为什么取...原创 2018-10-08 16:03:16 · 1071 阅读 · 0 评论 -
leetcode-518 硬币组合种类数
·状态转移方程dp[i]=dp[i-coins[j]]·和之前leetcode-322 硬币找零问题不同,这里是以coins为外层循环int change(int amount, vector<int>& coins) { int *dp=new int[amount+1]; for(int i=0;i<amount+1;i++){ dp[i]=0;...原创 2018-10-08 19:17:12 · 2179 阅读 · 0 评论 -
leetcode-36 是否有效数独
思路:(1)行中是否有重复(2)列中是否有重复(3)小九宫格是否有重复(如何利用i,j转换小九宫格的顺序)测试:·C++版bool isValidSudoku(vector<vector<char>>& board) { bool used1[9][9]={false},used2[9][9]={false},used3[9][9]={false...原创 2018-10-13 14:14:45 · 190 阅读 · 0 评论 -
leetcode-134 加油站绕一圈
测试:gas=1,2,3,4,5 cost=3,4,5,1,2 gas=3,4,2 cost=3,4,3int canCompleteCircuit(vector<int>& gas, vector<int>& cost) { int size=gas.size(); int *Save=new int[size]; f...原创 2018-10-11 19:24:43 · 346 阅读 · 0 评论 -
leetcode-283 移动零元素到数组最后
//测试:nums=1,0,3,0,12 nums=1,0,0,0,123void moveZeroes(vector<int> &nums) { int size=nums.size(); int j=0; for(int i=0;i<size;i++){ if(nums[i]==0){ if(j==0){ j=i+1; ...原创 2018-10-11 13:22:36 · 116 阅读 · 0 评论 -
Tensorflow学习笔记-1
#encoding:utf-8import tensorflow as tfimport numpy as np#定义随机数和函数关系x0=np.random.rand(100).astype(np.float32)y0=x0*0.1+0.3#搭建模型w=tf.Variable(tf.random_uniform([1],-1,1))biases=tf.Variable(tf...原创 2018-10-07 12:55:18 · 108 阅读 · 0 评论 -
tensorflow学习笔记-3 图片数字的识别
(1)下载数据集(2)编写代码#encoding:utf-8import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data# 获取数据mnist = input_data.read_data_sets("C:/E/ChromeDownload/MNIST_data/", one...原创 2018-10-15 13:41:30 · 555 阅读 · 0 评论 -
leetcode-11 容器装水最多
链接测试用例:Input: [1,8,6,2,5,4,8,3,7]Output: 49int maxArea(vector<int>& height) { int maxWater = 0; int i = 0, j = height.size() - 1; while (i < j) { int m=min(height[i], hei...原创 2018-10-28 11:30:39 · 275 阅读 · 0 评论 -
二分法的两种常用模板以及原理解释
acwing,yxc大佬总结的二分法原理解释二分模板一共有两个,分别适用于不同的情况。算法思路:假设目标值在闭区间[l,r]中,每次将区间长度缩小一半,当l=r时,我们就找到了目标值。以[0,0,0,0,1,1,1,1]为例,解释原理(1)如果要查找的最后一个0,即要确定左半边的边界时,此时如果mid处的值为0,说明边界值(也就是最后一个0)一定在mid的右边(包含mid值),故更新为...原创 2019-09-08 15:29:50 · 3188 阅读 · 1 评论 -
K-Means聚类代码实现
#encoding:utf-8import numpy as npfrom sklearn.cluster import KMeansdef LoadData(filePath): f=open(filePath,'r+') lines=f.readlines() retCityName=[] retData=[] for line in lines...原创 2019-11-28 20:03:15 · 235 阅读 · 0 评论