- 博客(18)
- 收藏
- 关注
原创 巧妙利用`差分法`加快 《增加某一数组范围内的值》 的效率
但我只需要将l到r的所有元素加上c,所以需要将b[r+1]-=c,这样a数组对应的a[r+1]到a[a.length-1]的值都会减掉c,从而保证了需求得到满足。差分法是通过新建一个和原数组a长度相同的数组b,将原数组看为b的前缀和数组,b称为a的差分数组。前缀和,顾名思义就是一个数组的前n项和,由数学公式Sn-Sn-1=an可以轻松的计算出前缀和数组的每一位的值,如下。将b[l]+=c,所以a数组对应的a[l]到a[a.length-1]的值都会加上c。...
2022-07-25 15:52:07
141
原创 力扣-递增的三元子序列(贪心算法)
给你一个整数数组nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k)且满足 i < j < k ,使得nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例 2:输入:nums = [5,4,3,2,1]输出:false...
2022-05-06 15:52:19
163
原创 力扣-字符串转为整数
函数myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。如果整数数超过 3.
2022-03-25 00:28:27
119
原创 力扣-字符串相加
classSolution{publicStringaddStrings(Stringnum1,Stringnum2){StringBuildersb=newStringBuilder();inttemp=0;//设置一个量记录每次要放入sb中的值intlen1=num1.length()-1,len2=num2.length()-1;while(len1>=0||l...
2022-03-21 23:21:13
217
原创 力扣-有效的括号(栈实现)
classSolution{publicbooleanisValid(Strings){//限定该栈中只能存Character类型元素Stack<Character>stack=newStack<>();for(inti=0;i<s.length();i++){charc=s.charAt(i);if(c=='('||c=='['||c=='{')...
2022-03-15 15:31:20
370
原创 力扣-多数元素(投票法)
给定一个大小为 n 的数组,找到其中的多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2classSolution{publicintmajorityElement(int[]nums){intcount=0;intmax=0;for(intnum:nums){if(count==0){...
2022-03-01 00:06:31
150
原创 力扣-两个数组的交集
classSolution{publicint[]intersection(int[]nums1,int[]nums2){Set<Integer>set1=newHashSet<>();Set<Integer>set2=newHashSet<>();for(inti:nums1){set1.add(i);...
2022-02-28 20:16:13
129
原创 力扣-只出现一次数字的数字
一个数组,只有一个数出现一次,其他数都至少出现两次,如何找出那个只出现一次的数第一种:暴力解法,两个for循环即可,但时间复杂度高达O(N*N)第二种:位运算import java.util.Scanner;public class Main {public static void main(String[] args){Scanner input = new Scanner(System.in);...
2022-02-28 19:45:08
165
原创 力扣-对称二叉树(递归)
在动手写代码前需要进行思考,为什么这题可以用递归去解--> 是否对称与结点以及其孩子结点有关。将二叉树从根节点以下分开,变成左右两个新的二叉树,新增一个判断两个二叉树是否对称的方法,利用递归方法,返回答案。publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){thi...
2022-02-28 18:22:10
144
原创 力扣-合并二叉树(java实现,递归)
两棵树合并,对应结点的值相加,不为null的结点会变成新树的结点这里采用递归的方法,从两棵树的根节点开始将对应结点的值相加,直到两棵树的叶结点都为null/*publicclassTreeNode{ intval; TreeNodeleft; TreeNoderight; TreeNode(){} TreeNod...
2022-02-28 15:10:15
639
原创 leetcode-关于最优除法
力扣上的一道算法题,需要计算数组如何搭配括号和除号得到最大的结果其实就是把第一个放在第一个,将剩下的用括号包裹,每个元素后加 “/”就可以得到最大的结果
2022-02-27 11:39:10
64
原创 蓝桥杯:Kac给你糖果吃
资源限制时间限制:1.0s 内存限制:256.0MB问题描述 kAc有n堆糖果,每堆有A[i]个。 kAc说你只能拿m次糖果,聪明的你当然想要拿最多的糖果来吃啦啦啦~ //第二天,kAc问你还想吃糖果么?(嘿嘿嘿)说着眼角路出奇怪的微笑...输入格式 第一行两个数字n和m,第二行有n个数字A[i]。输出格式 输出一行表示最多能拿几个糖果。样例输入2 21 2样例输出3代码如下:import java.util.Arrays;impor.
2022-02-24 21:37:30
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人