算法
积木98
这个作者很懒,什么都没留下…
展开
-
第185场周赛题目整理
做过的题再遇到还是想不起来,还是勤劳一点,多做笔记把重新格式化字符串比赛时候完全用字符串拼接,写了很长时间。赛后看大佬们讨论,才想到用栈保存这个就是先把数字保存一个栈,然后字母保存一个栈,然后看他么的差是否大于1.之后一人一下的往里面放。class Solution { public String reformat(String s) { Stack...原创 2020-04-20 11:33:39 · 117 阅读 · 1 评论 -
单调递减序列简单总结
一般我们遇到 一个数组或者字符串 等等其他之类把求某个单调递增或递减的时候,往往配合栈进行扫描今天在做Leetcode 962 最大宽度坡 这道题的时候,看到题解区 有位老哥 总结的感觉很简约,于是写此博文消化一下。题目给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j]。这样的坡的宽度为 j - i。找出 A ...原创 2020-04-08 09:12:50 · 1912 阅读 · 0 评论 -
排序算法整理:堆排序
堆排序模板class HeapSort { // 堆排序 public void heapSort(int[] tree, int n) { buildHeap(tree, n); for (int i = n - 1; i > -1; i--) { swap(tree, 0, i);// 把最大的放在最后面 heapify(tree, 0, i); } }...原创 2020-04-04 15:21:11 · 128 阅读 · 0 评论 -
排序算法整理:归并排序
归并模板 public void mergeSort(int [] arr ,int L,int R) { if(L>=R)return; int mid =R+L>>1; mergeSort(arr,L,mid); mergeSort(arr,mid+1,R); int []tmp = new int [R-L+1]; int i=L,j=mid+1,...原创 2020-04-04 11:18:41 · 99 阅读 · 0 评论 -
LeetCode 135. 分发糖果
题目连接:https://leetcode-cn.com/problems/candy/思考这道题目之前貌似做过,就是遇到比前一个人大的就+1,遇到相同的就归1,然后看到了第一个样例,发现左面的人比右面大的话也需要考虑一下所以还需要从后往前遍历一遍class Solution { public int candy(int[] ratings) { int ...原创 2020-04-02 14:09:10 · 161 阅读 · 0 评论 -
LeetCode 134. 加油站
作为一名菜鸡,发现不做笔记真不行,勤劳致富。题目连接:https://leetcode-cn.com/problems/gas-station/第一种暴力循环每个作为起点时 是否满足条件(射射发抖,只想到了暴力)第二种解法。本着学到了就是自己的原则打开题解区先学习一波官方题解题解区看到一个大佬最清晰的解释,记录一下就是说 用折现来表示当前油量那么,将油量最低点上移到0...原创 2020-04-02 13:11:02 · 115 阅读 · 0 评论 -
快速幂模板
power2(ll a, ll b){ ll res = 1; a %= c; while (b){ if (b & 1) ///判断最后一位 res = res * a; a = a * a; ///a自乘 b >>= 1; ///b应当右移一位 } return ...原创 2020-03-31 11:08:30 · 76 阅读 · 0 评论 -
Trie(前缀树)模板
class TrieNode{ private char val; public boolean isEnd; TrieNode [] next = new TrieNode[26]; public TrieNode(){} public TrieNode(char val){ this.val=val; }}class Trie...原创 2020-03-28 23:38:28 · 90 阅读 · 0 评论 -
二分思路整理
最近在刷二分。现在整理一下二分看似简单,可是在处理边界情况下是真的难以琢磨,所以把稍微理解的记录一下,日后忘记可以快读回想。模板 while(l<=r){ int mid=l+((r-l)>>1); if(nums[mid]==target)return mid; if(nums[mid]<target)l=mid+1; ...原创 2020-03-21 12:48:44 · 253 阅读 · 0 评论 -
排序算法整理:快速排序
快排模板public static void quick_sort(int[] arr ,int L,int R) { if(L>=R)return; int i=L-1,j=R+1; int var=arr[L]; while(i<j) { do i++;while(arr[i]<var); do j--;while(arr[j]>var);...原创 2020-03-20 20:46:53 · 122 阅读 · 0 评论 -
动态规划总结(2)
总结下今天学习的题目1.LeetCode 221 最大正方形在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4这道题目还是比较好理解的这里借用别人一张图片,就是说,当前位置最大的正方形,由左上 左面 上面 三个位置所限制,所能拓展的最大正方形也...原创 2020-03-18 19:28:14 · 172 阅读 · 0 评论 -
动态规划总结(1)
今日开始稍微学习动态规划,前来总结下每日战绩、1.LeetCode 120,三角形最小路径和例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。首先,看到这道题可以想出,就是从上往下走,2可以到3也可以到4,后面同理,因此,很明显是一道动态规划问题。开...原创 2020-03-14 20:19:54 · 170 阅读 · 0 评论 -
LeetCode 1071 字符串的最大公因子
今天刷题遇到了这个题,看到官方题解,实在是太巧妙了,前来记录一下对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。例如输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”输入:str1 = “ABAB...原创 2020-03-12 22:36:20 · 409 阅读 · 0 评论 -
LeetCode 面试题57 - II. 和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例输入:target = 9输出:[[2,3,4],[4,5]]输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]看到这个题首先想到了,双指针由举例可以看出来,最大的数为target...原创 2020-03-06 19:40:16 · 150 阅读 · 0 评论 -
红包算法-二倍均值法
今天看到个有意思的题目,赶快来记录下来就是说 100块钱随机发红包,怎样才能公平假设剩余红包金额m元,剩余人数n人。那么有如下公式每次抢到的金额=随机区间[0.01,m/n2-0.01]元举个例子100/52=40元。 所以第一个人抢到的金额范围在0.01-39.99元。第二个人 80/4*2 所以第二个人抢到的金额范围在0.01-39.99元所以,每个人抢到的范围均值是相等的...原创 2020-03-06 13:09:42 · 4519 阅读 · 3 评论 -
只出现一次的数字 1,2,3
之前做过好多遍只出现一次的数字,当时学到了通过位运算解决今天又看到一个 求两个单独的数字,也是通过位运算做到的,太狠了,这些大佬们思考:1.比如一组数 只有一个单独存在的数,其他都是两个,那么通过异或运算,剩下的就是这个数2.现在又来一组数,有两个单独的数字,那么通过异或运算之后的结果,就是这两个数的异或结果举个例子 一组数 1,2,1,3,2,5 单独的数是3和5二进...原创 2020-03-01 13:27:02 · 180 阅读 · 0 评论 -
LeetCode 302 移掉K位数字
输入: num = “1432219”, k = 3输出: “1219”解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。理解:首先从前往后判断,如果当前这个数大于后一位的数,那么这个位置就该删除比如196 1和9比,让第一位留1肯定比9小,9和6比,把9删除肯定比6划算。所以依次遍历即可,但是会有些特殊情况 需要特殊处理1.可能会有 1000...原创 2020-02-29 15:36:55 · 189 阅读 · 0 评论 -
寻找全排列的下一个数:字典序算法 leetcode 31
题目给出一个正整数,找出这个正整数所有数字全排列的下一个数。说通俗点就是在一个整数所包含数字的全部组合中,找到一个大于且仅大于原 数的新整数。让我们举几个例子。如果输入12345,则返回12354。 如果输入12354,则返回12435。解题思路首先 题目要求找到给出的全排列的下一个排列那么,就要尽量高位不变,那首先确定肯定从后往前找例如 1 2 3 5 4 这个数字就是要找...原创 2020-02-29 11:51:40 · 303 阅读 · 0 评论 -
判断一个数是否为2的整数次幂
判断一个数是否是2的整数次幂如果一个数是2的整数次幂那么转换成二进制就是10,10,1000,10000这样的形式然后该数减去1,就是1,11,111,111这样的形式所以判断方式就是 a&(a-1)==0, 写的漂亮一点 return !a&(a-1);...原创 2020-02-28 11:31:39 · 167 阅读 · 0 评论 -
最大公约数四种方法及模板
最大公约数分析:1.暴力法取min(a,b)暴力循环,O(min(a,b));2.辗转相除法,来回辗转,直到余0,但是取模性能较差3.更相减损术,来回相减,最后两数相等。运算次数太多4.更相减损术优化:当a和b均为偶数时,gcd(a,b) = 2×gcd(a/2, b/2) = 2×gcd(a>>1,b>>1)。当a为偶数,b为奇数时,gcd(a,b) = ...原创 2020-02-28 11:30:15 · 526 阅读 · 0 评论 -
背包问题详细整理
1.01背包问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。然后装包,求总价值最大。第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值输入格式输入样例4 51 22 43 44 5输出样例:8首先每件物...原创 2020-02-28 11:16:40 · 331 阅读 · 0 评论 -
newoj 2205 兔子与快乐水
题目描述Yisin和兔兔之间经常分享好吃的。这天,他们得到了3堆肥宅快乐水。每堆都包含数量各异的快乐水。因为兔兔不能喝太多的快乐水,这会对胃产生不好的影响。所以Yisin决定给兔兔立下一个规矩:\兔兔可以先从三堆快乐水中选择一堆;\ 然后Yisin小姐姐从剩下两堆中进行选择一堆;\ 最后一堆快乐水会按照兔兔的意愿进行分割(比如兔兔拿到了整堆,而Yisin小姐姐一瓶也没有)。 这样子,...原创 2019-10-20 22:22:25 · 171 阅读 · 0 评论 -
newoj 2233 Iris排队
题目描述Iris带小朋友出去玩。为了方便带队,需要把随便站着的小朋友从矮到高排好队,矮的站在前面。由于小朋友是来自二次元的神秘物种,他们的身高只有0和1两种。现在Iris有两种操作,操作一是花费a的精力把小朋友从高到矮排好,操作二是花费b的精力把相邻的两个小朋友交换位置。Dirt统计好了初始状态下小朋友们的站队情况,请你帮Iris算一算她需要花费多少精力才能把小朋友们排好队。输入描述输...原创 2019-10-20 22:15:30 · 264 阅读 · 2 评论 -
newoj 1120 水池
题目描述有一个圆形的水池,它的圆心在坐标(0,0)点。水池中有一个桥连接,这个桥可以认为是平面上一条线段AB,并且A点和B点都在水池的边界上。Roliy想从点F走到点G,F点和G点也都在水池的边界上。他有点胖所以不会游泳,所以他请你帮他写个程序告诉他从F点到G点的最小距离是多少。输入描述多组输入数据。第一行包含一个整数R(1<=R<=100),表示水池的半径。第...原创 2019-10-20 22:12:21 · 204 阅读 · 0 评论