- 博客(24)
- 收藏
- 关注
原创 重新排序得到2的幂
869. 重新排序得到 2 的幂给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。示例 1:输入:1输出:true示例 2:输入:10输出:false示例 3:输入:16输出:true示例 4:输入:24输出:false示例 5:输入:46输出:true提示:1 <= N <= 10^9来源:力扣(LeetCode)链接:https://
2021-10-28 16:56:02
166
原创 所有奇数长度子数组的和(dp解法,官网没有)
给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[1,4,2,5,3] = 15我们将所有值求和得到 1 + 4 + 2 + 5 +
2021-08-29 18:24:26
190
1
原创 最好记的二分搜索算法(参考labuladong算法笔记)
三种情况的模板,记忆一下一劳永逸第一种情况:找到符合条件的地方,直接返回下标int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) { left = mid + 1; } else if (num
2021-08-12 12:38:21
207
原创 href传中文到后台,后台接收到乱码(即使前后台都规定了UTF-8编码也不行)
修改Eclipse中tomcat的server.xml。具体步骤:
2021-08-09 13:49:33
143
转载 网络延迟时间(迪杰斯特拉算法)
有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。示例 1:输入:times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2输出:2示例 2:输入:times
2021-08-02 11:08:32
760
原创 二叉树的垂序遍历(TreeMap)
给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。对位于 (row, col) 的每个结点而言,其左右子结点分别位于 (row + 1, col - 1) 和 (row + 1, col + 1) 。树的根结点位于 (0, 0) 。二叉树的 垂序遍历 从最左边的列开始直到最右边的列结束,按列索引每一列上的所有结点,形成一个按出现位置从上到下排序的有序列表。如果同行同列上有多个结点,则按结点的值从小到大进行排序。返回二叉树的 垂序遍历 序列。示例 1:输入:root = [
2021-07-31 11:40:15
226
原创 实现pow函数
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 < x < 100.0-231 <= n <= 231-1-104 <= xn <
2021-07-28 21:16:19
1471
原创 检查是否区域内所有整数都被覆盖
给你一个二维整数数组 ranges 和两个整数 left 和 right 。每个 ranges[i] = [starti, endi] 表示一个从 starti 到 endi 的 闭区间 。如果闭区间 [left, right] 内每个整数都被 ranges 中 至少一个 区间覆盖,那么请你返回 true ,否则返回 false 。已知区间 ranges[i] = [starti, endi] ,如果整数 x 满足 starti <= x <= endi ,那么我们称整数x 被覆盖了。示例
2021-07-23 09:57:56
153
原创 只出现一次的数字(异或运算解决)
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。^异或符:0 ^ n =
2021-07-19 11:33:35
112
原创 最大子序和(dp问题)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000来源:力扣(LeetCode
2021-07-16 10:27:24
146
原创 最长递增子序列(dp问题)
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,7,7,7,7,7]
2021-07-14 07:52:04
199
原创 打家劫舍(dp问题)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9,3,
2021-07-13 11:29:07
116
原创 每日温度(暴力法和栈递减)
请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/daily-temperatures著作权归领扣网络所有。商业转
2021-07-12 11:17:34
117
原创 主要元素(map法和摩尔投票法)
数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-majority-element-lcci著作权归领
2021-07-09 10:49:18
129
原创 重排链表(栈实现)
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.来源:力扣(LeetCode)链接:https://leetc
2021-07-08 10:53:23
116
原创 前缀和满足条件子数组
给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的 非空 子数组。子数组 是数组的一段连续部分。示例:输入:nums = [1,0,1,0,1], goal = 2输出:4解释:如下面黑体所示,有 4 个满足题目要求的子数组:[1,0,1,0,1][1,0,1,0,1][1,0,1,0,1][1,0,1,0,1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-subarra
2021-07-08 09:47:45
131
原创 01背包改编(算硬币金额方案数)
###给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。01背包问题,可以从最经典的版本改写得到答案。先按照每个硬币只能取一次的情况编写代码。这里dp代表方案数,j代表总价值,i代表第i种硬币(题目给的数组从0开始的)。 每次从后往前更新方案数。class Solution { public int change(int amount, int[] coins) { int[] dp = new int[amount+1]
2021-06-10 14:36:50
142
原创 归并排序 JAVA
## 标题注意点基本都在注释里有,看注释就好。** //辅助数组,之后用到 int[] temp; //总的归并函数,调用下面的函数 public void Merge(int[] nums) { int n = nums.length; temp=new int[n]; mergesort(nums, 0, n-1); } public void mergesort(int[] nums, int low, int
2021-06-09 16:59:56
69
原创 关于Tocbot插件中目录无法导航到指定位置的问题
tocbot生成的目录是依托于h1,h2,h3标题的。但是定位是基于id的。所以我改成了于是,成功定位
2021-04-15 16:54:50
560
原创 关于自适应竖屏手机浏览器的CSS样式
不添加css样式,在PC端能正常显示的网页到了手机上就显示不正常啦!最大宽度设置为768px 意味着:超过此宽度的浏览器就会显示这个样式。巧妙利用了手机竖屏时宽度较小的特性。下面功能包括在手机端显示和隐藏,左右边距设置为零及宽度占据百分百@media screen and (max-width: 768px) { .m-mobile-hide{ display: none !important; } .m-mobile-show{ display: block !important;
2021-04-14 10:06:09
632
原创 VSCode中open in browser 的 default browser 咋改
我改了半天,放弃了。直接改了win10系统的默认浏览器。一样用!!!搜索默认应用### 进来改默认浏览器就完事了结果展示
2021-04-14 09:35:39
441
原创 线程锁让线程更安全(多人买票,取钱,ArrayList的例子)
三人买票(不加synchronized)package com.cyz.lock;//不安全的买票//线程不安全,会拿到同一张票public class UnsafeBuyTicket { public static void main(String[] args) { BuyTicket station = new BuyTicket(); new Thread(station,"我").start(); new Thread(stati
2021-04-10 14:27:18
118
原创 Java UDP实现发送和接收(一个端口发送,一个端口接收)
UDP是无连接的,发送方只管发,有没有人接都随他便UDP靠DatagramSocket这个类实现通信。发送方创建这个类需要指定自己的port。我们从控制台读入语句。需要一个BufferedReader。再用String类型去接收。然后转换成字节数组。最后传入DatagramPacket,这里需要四个参数,字节数组,数组起始位置,数组结束位置,InetSocketAddress(包括我们发到哪个IP去,发到该IP哪个端口)。用DatagramSocket把这个DatagramPacket包发出去
2021-04-09 10:06:30
5439
3
原创 基于Java的awt的加减乘除计算器(基本已过时,练手即可)
基于awt的加减乘除简易计算器(基本已过时,练手即可)整体思路我们需要一个frame窗体,采用一列四行的布局(这里就需要用到gridLayout这个表格布局了)。一列四行,所以要四个panel容器,每个panel容器对应一种运算。每个panel容器各需要三个文本框TextField(前两个文本框作输入框,第三个作输出结果框)。每个panel容器还各需要一个label标签(显示“+”,“-”,“*”,“/”)和一个button按钮(显示“=”,点击后进行运算并显示结果,所以需要写各自的监听器)
2021-04-06 21:42:52
369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人