公平的糖果棒交换(java实现)
力扣 888. 公平的糖果棒交换题目说明爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。
因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)
返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。
如果有多个答案,你可以返回其中任何一个。保证答案存在。
1 <= A.length <= 10000
1 <= B.length <= 10000
1 <= A[i] <= 100000
1 <= B[i] <= 100000
保证爱丽丝与鲍勃的糖果总量不同。
答案肯定存在。
示例例112输入:A = [1,1], B = [2,2]输出:[1,2]
例212输入:A = [1,2], B = [2,3]输出:[1,2]
例312输入:A = [2], B = [1,3]输出:[2,3]
例412输入:A = ...
寻找数组的中心索引(java实现)
力扣 724. 寻找数组的中心索引题目说明给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。
我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。
nums 的长度范围为 [0, 10000]。
任何一个 nums[i] 将会是一个范围在 [-1000, 1000]的整数。
示例例1123456输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相等。同时, 3 也是第一个符合要求的中心索引。
例212345输入:nums = [1, 2, 3]输出:-1解释:数组中不存在满足此条件的中心索引。
笔者理解此题是一道数组求解算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题没有花里胡哨的,直接两个变量存储左右序列的和,再比较找出平衡节 ...
等价多米诺骨牌对的数量(java实现)
力扣 1128. 等价多米诺骨牌对的数量题目说明给你一个由一些多米诺骨牌组成的列表 dominoes。
如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。
形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 a == c 且 b == d,或是 a == d 且 b == c。
在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨牌对 (i, j) 的数量。
1 <= dominoes.length <= 40000
1 <= dominoes[i][j] <= 9
示例例112输入:dominoes = [[1,2],[2,1],[3,4],[5,6]]输出:1
笔者理解此题是一道数组求解算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现只要把骨牌的组合出现次数计算出来,并把各种组合的骨牌的对数求出来累加即可,就让 ...
初识MySQL
引入javaEE:企业级java开发,主要开发的就是web
前端:(页面,展示数据)
后台:(连接点,连接数据库(JDBC),连接前端(控制数据跳转,给前端传递数据))
数据库:(存数据,Txt,Excel,Word)
掌握代码,会数据库基本操作(初级程序猿,混饭吃)
掌握操作系统,数据结构与算法(中级程序猿)
掌握离散数学,数字电路,体系结构,编译原理 + 实战经验(高级程序猿,优秀的程序猿)
学习数据库的原因
岗位需求
时代需求:大数据时代
被迫需求:用以存储数据
数据库是所有软件体系最核心的存在
数据库是什么数据库:DB(Database)
概念:保管数据的电子“仓库”
作用:组织、存储和管理数据
数据库分类关系型数据库:形式拥有行和列,类似于Excel(SQL)
MySQL,Oracle,SQLServer,DB2,SQLlite
通过表和表之间,行和列之间 类似于 学生信息表,考勤表……
非关系型数据库:(NoSQL) Not Only
Redis,MongoDB
对象存储,通过对象自身的属性来决定
DBMS(数据库管理系统)数据库的管理软件,科学有效的 ...
最长连续递增序列(java实现)
力扣 674. 最长连续递增序列题目说明给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。
0 <= nums.length <= 104
-109 <= nums[i] <= 109
示例例11234输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。
例2123输入:nums = [2,2,2,2,2]输出:1解释:最长连续递增序列是 [2], 长度为1。
笔者理解此题是一道数组求解算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,一开始想着用两个 ...
数组形式的整数加法(java实现)
力扣 989. 数组形式的整数加法题目说明对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。
给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。
1 <= A.length <= 10000
0 <= A[i] <= 9
0 <= K <= 10000
如果 A.length > 1,那么 A[0] != 0
示例例1123输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234
例2123输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455
例3123输入:A = [2,1,5], K = 806输出:[1,0,2,1]解释:215 + 806 = 1021
例4123输入:A = [9,9,9,9,9,9,9,9,9,9], K = 1输出:[1,0,0,0,0,0,0,0,0,0,0]解释:9999999999 + 1 ...
三个数的最大乘积(java实现)
力扣 628. 三个数的最大乘积题目说明给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
示例例112输入: [1,2,3]输出: 6
例212输入: [1,2,3,4]输出: 24
笔者理解此题是一道数组求解算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现只要直接排序及考虑几种特殊情况即可,排序完之后,我们可以发现:
1、 数字全部为正数或者负数,取最大三个整数的乘积即可
2、 负数和正数都存在,且最小的两个负数的乘积较大,取最小两个负数的乘积再乘上最大正数
就让我们看看具体如何实现吧。
实现12345678910public int maximumProduct(int[] nums) { int size = nums.length; //数组长度 Arrays.sort(nums); //将数组排序 ...
缀点成线(java实现)
力扣 1232. 缀点成线题目说明在一个 XY 坐标系中有一些点,我们用数组 coordinates 来分别记录它们的坐标,其中 coordinates[i] = [x, y] 表示横坐标为 x、纵坐标为 y 的点。
请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。
2 <= coordinates.length <= 1000
coordinates[i].length == 2
-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
coordinates 中不含重复的点。
示例例1
12输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]输出:true
例2
12输入:coordinates = [[1,1],[2,2],[3,4],[4,5],[5,6],[7,7]]输出:false
笔者理解此题是一道二维坐标数学算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现求各个点是 ...
可被5整除的二进制前缀(java实现)
力扣 1018. 可被 5 整除的二进制前缀题目说明给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为一个二进制数(从最高有效位到最低有效位)。
返回布尔值列表 answer,只有当 N_i 可以被 5 整除时,答案 answer[i] 为 true,否则为 false。
1 <= A.length <= 30000
A[i] 为 0 或 1
示例例11234输入:[0,1,1]输出:[true,false,false]解释:输入数字为 0, 01, 011;也就是十进制中的 0, 1, 3 。只有第一个数可以被 5 整除,因此 answer[0] 为真。
例212输入:[1,1,1]输出:[false,false,false]
例312输入:[1,1,1,0,1]输出:[false,false,false,false,false]
笔者理解此题是一道位运算判定算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题就是在计算各位置二进制累积所得数的个位数对5取余是否等于0,所以我们只 ...
冗余连接(java实现)
力扣 684. 冗余连接题目说明在本问题中, 树指的是一个连通且无环的无向图。
输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。
结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。
返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边 [u, v] 应满足相同的格式 u < v。
输入的二维数组大小在 3 到 1000。
二维数组中的整数在1到N之间,其中N是输入数组的大小。
示例例1123456输入: [[1,2], [1,3], [2,3]]输出: [2,3]解释: 给定的无向图为: 1 / \2 - 3
例2123456输入: [[1,2], [2,3], [3,4], [1,4], [1,5]]输出: [1,4]解释: 给定的无向图为:5 - 1 - 2 | | 4 - 3
笔者理解此题是一道字 ...









