数组中最大数对和的最小值
力扣 1877. 数组中最大数对和的最小值题目说明
一个数对 (a,b) 的 数对和 等于 a + b 。最大数对和 是一个数对数组中最大的 数对和 。
比方说,如果我们有数对 (1,5) ,(2,3) 和 (4,4),最大数对和 为 max(1+5, 2+3, 4+4) = max(6, 5, 8) = 8 。
给你一个长度为 偶数 n 的数组 nums ,请你将 nums 中的元素分成 n / 2 个数对,使得:
nums 中每个元素 恰好 在 一个 数对中,且
最大数对和 的值 最小 。
请你在最优数对划分的方案下,返回最小的 最大数对和 。
提示:
n == nums.length
2 <= n <= 10^5
n 是 偶数 。
1 <= nums[i] <= 10^5
示例示例 1:
1234输入:nums = [3,5,2,3]输出:7解释:数组中的元素可以分为数对 (3,3) 和 (5,2) 。最大数对和为 max(3+3, 5+2) = max(6, 7) = 7 。
示例 2:
1234输入:nums = [3,5,4,2, ...
最高频元素的频数
力扣 1838. 最高频元素的频数题目说明
元素的 频数 是该元素在一个数组中出现的次数。
给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。
执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。
提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^5
1 <= k <= 10^5
示例示例 1:
1234输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。
示例 2:
123456输入:nums = [1,4,8,13], k = 5输出:2解释:存在多种最优解决方案:- 对第一个元素执行 3 次递增操作,此时 nums = [4,4,8,13] 。4 是数组中最高频元素,频数是 2 。- 对第二个元素执行 4 次递增操作,此时 nums = [1,8,8 ...
变位词组
力扣 面试题 10.02. 变位词组题目说明
编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。
注意:本题相对原题稍作修改
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
示例示例1:
1234567输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]
笔者理解此题是一道哈希表算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现此题采用哈希表进行记录比较容易求解,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122232425262728293031323334 ...
连续子数组的最大和
力扣 剑指 Offer 42. 连续子数组的最大和题目说明
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。
要求时间复杂度为O(n)。
提示:
1 <= arr.length <= 10^5
-100 <= arr[i] <= 100
示例示例1:
123输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
笔者理解此题是一道动态规划算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题的动态规划里面好像带一点的贪心,用dp数组来模拟连接子串的过程,如果前面的子串的和大于0我就继续连接,否则我就重新开始子串连接,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122class Solution { /* * 动态规划 */ public int maxSubArray(int[] nums) { ...
减小和重新排列数组后的最大元素
力扣 1846. 减小和重新排列数组后的最大元素题目说明
给你一个正整数数组 arr 。请你对 arr 执行一些操作(也可以不进行任何操作),使得数组满足以下条件:
arr 中 第一个 元素必须为 1 。
任意相邻两个元素的差的绝对值 小于等于 1 ,也就是说,对于任意的 1 <= i < arr.length (数组下标从 0 开始),都满足 abs(arr[i] - arr[i - 1]) <= 1 。abs(x) 为 x 的绝对值。
你可以执行以下 2 种操作任意次:
减小 arr 中任意元素的值,使其变为一个 更小的正整数 。
重新排列 arr 中的元素,你可以以任意顺序重新排列。
请你返回执行以上操作后,在满足前文所述的条件下,arr 中可能的 最大值 。
提示:
1 <= arr.length <= 10^5
1 <= arr[i] <= 10^9
示例示例 1:
12345输入:arr = [2,2,1,2,1]输出:2解释:我们可以重新排列 arr 得到 [1,2,2,2,1] ,该数组满足所有条件。ar ...
绝对差值和
力扣 1818. 绝对差值和题目说明
给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。
数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。
你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。
在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余 后返回。
|x| 定义为:
如果 x >= 0 ,值为 x ,或者
如果 x <= 0 ,值为 -x
提示:
n == nums1.length
n == nums2.length
1 <= n <= 105
1 <= nums1[i], nums2[i] <= 10^5
示例示例 1:
123456输入:nums1 = [1,7,5], nums2 = [2,3,5]输出:3解释:有两种可能的最优方案:- 将第二个元素替换为第一 ...
初识前端组件库
引言 在实际的学习和设计过程中,我们不可避免地会接触到前端的html,css,js等代码,但是在对页面进行调试的时候,真心的不是很方便。还有诸如笔者这种偏向于后端的代码开发人员就更加头大了,往往一个页面就弄一上午,非常的浪费时间。
所以呢,在各种途径的搜寻下以及在观看了腾讯的鱼皮大佬的视频后,发现了一个宝藏的工具:前端组件库
组件库说明组件库:顾名思义呢就是一大堆前端组件的库,里面有开源大佬已经帮你总结写好的诸多组件的代码和样式以及动作,能够让你轻松的快速页面开发不是梦。
使用组件库
搜索
利用搜索引擎搜索组件库
原生:LayUI
Vue:ElementUI
React:Ant Design
移动端/小程序:VantUI
开始
来到对应组件库的官网,进入文档,选择快速开始或者开始使用等快速解释文档
引入
按照文档步骤,下载工具包到本地映入项目中,或者直接使用CDN进行引入
选择
选择自己需要的组件
看文档
在当前自己选择的组件文档中,仔细看一遍,选择更加方便完整的方式
粘贴
复制粘贴(手动狗头)
修改
根据自己的具体设计和需求修改对应的代码
主要元素
力扣 面试题 17.10. 主要元素题目说明
数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。
示例示例 1:
12输入:[1,2,5,9,5,9,5,5,5]输出:5
示例 2:
12输入:[3,2]输出:-1
示例 3:
12输入:[2,2,1,1,1,2,2]输出:2
笔者理解此题是一道数组算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,笔者采用了,正反向选举的方式,如果一个数的出现超过半数,那么肯定他出现的次数可以抵消掉其他所有出现的数的次数,依照此规律,我们仅需两次遍历就可以把主要元素找出来,让我们来看看具体如何实现的吧。
实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364class Solution { /* ...
和相同的二元子数组
力扣 930. 和相同的二元子数组题目说明
给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的 非空 子数组。
子数组 是数组的一段连续部分。
示例示例 1:
12345678输入: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]
示例 2:
12输入:nums = [0,0,0,0,0], goal = 0输出:15
笔者理解此题是一道数组算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,**笔者借鉴自宫水三叶大佬的解法**,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272829303132class Solution { /* * 前缀和+哈希 */ public int numSubarraysWithSum(int[] nums, in ...
初识VMware Workstation
引入虚拟机是什么虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。(百度百科)
虚拟机(英语:virtual machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于虚拟机这个软件所创建的环境来操作其它软件。虚拟机(VM)是计算机系统的仿真器,通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机的功能。(维基百科)
在笔者看来,虚拟机正如其名,就是能够让你在一台机器上同时运行两个或更多Windows、DOS、LINUX系统。
为什么使用虚拟机1.演示环境,可以安装各种演示环境,便于做各种例子;
2.保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序,或者测试用的程序在虚拟机上运行 ...









