- 博客(45)
- 收藏
- 关注
原创 MySQL学习
MySQL笔记DDL;数据定义语言(create表,库)DML :数据操作语言(增加insert 修改updata,删除delete)DQL:数据查询语句(select)DCL:数据控制语言(管理数据库)3306:监听mysqld.exe2.创建数据库3.备份恢复数据库在DOS命令下执行:mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql????恢复数据库(进入到mysql命令行再执行)第二个恢复方法, 直接将 bak.sql
2022-02-10 21:13:47
806
原创 028. 展平多级双向链表
剑指 Offer II 028. 展平多级双向链表class Solution { public Node flatten(Node head) { dfs(head); return head; } public Node dfs(Node node) { Node cur = node; // 记录链表的最后一个节点 Node last = null; while (cur !=
2022-01-26 22:02:38
398
原创 C语言学习
1.IDE :集成开发环境2.GCC:是由GNU开发的编程语言译器,GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库3.C语言程序#include<stdio.h>int main() { printf("Hello World!\n"); return 0;}#include<stdio.h>int main() { printf("20+10=%d\n", .
2022-01-26 10:16:07
2766
原创 《算法零基础100讲》(第60讲) 前缀和(四) 线性前缀和配合哈希表
1.1590. 使数组和能被 P 整除/*1.给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。2.请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。子数组 定义为原数组中连续的一组元素*/class Solution { public int minSubarray(int[] nums, int p) { int n = nums.length; in
2022-01-04 21:01:11
481
原创 《算法零基础100讲》(第59讲) 前缀和(三) 线性前缀和统计
1109. 航班预订统计/*1.这里有 n 个航班,它们分别从 1 到 n 进行编号。2.有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。3.请你返回一个长度为 n 的数组 answer,里面的元素是每个航班预定的座位总数*/class Solution { public i
2022-01-03 20:58:38
310
原创 《算法零基础100讲》(第57讲) 前缀和(一) 线性前缀和入门
303. 区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))/*给定一个整数数组 num
2022-01-02 21:50:10
251
原创 《算法零基础100讲》哈希表
1.剑指 Offer 03. 数组中重复的数字/*找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字 */class Solution { public int findRepeatNumber(int[] nums) { int [] arr = new int [nums.length]; for(int
2022-01-02 10:05:06
458
原创 【第03题】给定 a 和 b ,交换它们的值并输出 | 四种解法
面试题 16.01. 交换数字编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。class Solution { public int[] swapNumbers(int[] numbers) { numbers[1] += numbers[0]; numbers[0] = numbers[1] - numbers[0]; numbers[1] -= numbers[0]; return numbers
2022-01-01 11:09:50
380
转载 【第04题】给定 a 和 b,问 a 能否被 b 整除 | if 语句 和 条件运算符的应用
29. 两数相除给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2class Solution { // 时间复杂度:O(1) public int divide(int a, int b) {
2022-01-01 11:04:09
258
原创 【第02题】给定 n,求 1 + 2 + 3 + ... + n 的和 | 四种解法
剑指 Offer 57 - II. 和为s的连续正数序列输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。/*1.输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)2.序列内的数字由小到大排列,不同序列按照首个数字从小到大排列*/class Solution {//使用滑动窗口来处理相关的数据 public int[][] findConti
2022-01-01 10:28:12
1027
原创 《算法零基础100讲》(第53讲) 区间问题(二) 区间的并集和交集
57. 插入区间给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。class Solution {/*1.给你一个 无重叠的,按照区间起始端点排序的区间列表。2.在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)*/ public int[][] insert(int[][] intervals, int[] newInterval) {
2021-12-31 20:50:22
726
原创 【第35题】给定两个 a X b 和 c X d 的矩阵 ,求两个矩阵的乘积
1.面试题 01.08. 零矩阵编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。/*编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零*/class Solution { public void setZeroes(int[][] matrix) { HashSet<Integer> row = new HashSet<>(); HashSet<Integer> col = new Ha
2021-12-12 10:16:39
289
原创 Java设计模式--抽象工厂模式
抽象工厂模式文章目录抽象工厂模式前言一、抽象工厂模式概述二、抽象工厂模式结构与实现总结前言工厂方法模式中每个具体的工厂只需要生产一种具体产品,但在抽象工厂模式中一个具体的工厂可以生产一组相关的具体产品。一组产品称为产品族,产品族中的每一个产品都属于一个产品继承等级结构。一、抽象工厂模式概述1.抽象工厂模式与工厂模式区别:工厂方法模式针对的是一个产品等级结构,而抽象工厂模式需要面对对个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。2.抽象工厂的定义:提供一个创建
2021-12-11 10:48:50
813
2
原创 《LeetCode零基础指南》(第二讲) 函数
1.371. 两整数之和/**给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。 */class Solution { public int getSum(int a, int b) { return a + b; }}2.面试题 17.01. 不用加号的加法/**设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。 */class Solution {//异或计算 public int add(in
2021-12-10 11:11:55
299
原创 Java设计模式--工厂方法模式
工厂方法模式1.工厂方法模式的概述1.1工厂模式是简单工厂模式的延伸,符合开闭原则的基础上,还可以在增加新的具体产品对象时不需要对已有系统做任何修改。1.2工厂方法模式:定义一个用于创建对象的接口,但是让子类决定将哪个类实例化,工厂方法模式让一个类的实例化延伸到其子类。(也就是说在工厂方法模式中,不再提供一个统一的工厂类来创建所有的产品对象,而是对于不同的产品提供不同的工厂。例如:宝马工厂生产宝马汽车,奔驰工厂生产奔驰汽车。。。。。)2.工厂方法模式的结构2.1模式结构: (1):Produc
2021-12-09 22:48:33
8718
原创 《算法零基础100讲》(第47讲) 位运算 (异或) 进阶
文章目录260. 只出现一次的数字 III861. 翻转矩阵后的得分/*1.有一个二维矩阵 A 其中每个元素的值为 0 或 1 。2.移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。3.在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。4.返回尽可能高的分数 */class Solution { public int matrixScore(int[][] grid) {
2021-12-06 20:13:05
168
1
原创 《C语言入门100例》(第34例) 矩阵旋转
1.48. 旋转图像/*1.给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。2.你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像*/class Solution {//时间复杂度:O(n^2) public void rotate(int[][] matrix) { int n = matrix.length; int[][] matrixArr = new int
2021-12-06 19:34:12
690
原创 《算法零基础100讲》(第46讲) 位运算 (异或) 入门
1.477. 汉明距离总和`/*两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和 *//*思路:设元素的总数为m,当某一位出现1的次数为n,则两个数字的二进制数对应的数量为(m - n) * n */class Solution { public int totalHammingDistance(int[] nums) { int count = 0; in
2021-12-06 19:27:51
423
原创 《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
1.剑指 Offer II 005. 单词长度的最大乘积/*1.给定一个字符串数组words,请计算当两个字符串words[i]和words[j] 不包含相同字符时,它们长度的乘积的最大值。2.假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回0*/class Solution { public int maxProduct(String[] words) { int n = words.length; int [] counts =
2021-12-05 22:07:29
190
原创 《C语言入门100例》(第33例) 矩阵转置
1.867. 转置矩阵/*1.给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 2.矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 */class Solution { public int[][] transpose(int[][] matrix) { int n = matrix.length;//行 int m = matrix[0].length;//列 int [][] arr = new i
2021-12-04 10:57:03
887
1
原创 《算法零基础100讲》(第44讲) 位运算 (位或) 入门
1.231. 2 的幂/*1.给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。2.如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。 */class Solution { public boolean isPowerOfTwo(int n) { return n > 0 && (n & (n - 1)) == 0; }}2.2044. 统计按位或能得
2021-12-03 22:07:53
623
原创 《C语言入门100例》(第32例) 字符串反转
1.344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。class Solution { public void reverseString(char[] s) { for(int left = 0, right = s.length - 1; left < right; left++,right--){ c
2021-12-03 21:11:29
264
原创 《LeetCode零基础指南》(第四讲) 一维数组
1.33. 搜索旋转排序数组2.81. 搜索旋转排序数组 II3.153. 寻找旋转排序数组中的最小值4.70. 爬楼梯5.509. 斐波那契数6.1137. 第 N 个泰波那契数
2021-12-03 20:57:03
178
原创 排序入门 - 选择排序
1.769. 最多能完成排序的块数组arr是[0, 1, …, arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?/*数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同*/class Solution { public in
2021-12-02 21:51:07
144
原创 优质编程学习资料
推荐几个优质的学习链接:(来自公众号)Road 2 Coding 自公众号 :CodeSheep程序厨 公众号:袁厨的算法小屋编程导航 公众号:编程导航
2021-12-01 23:21:53
79
原创 《LeetCode零基础指南》(第九讲) 二级指针
1.832. 翻转图像class Solution { public int[][] flipAndInvertImage(int[][] image) { for(int i = 0; i < image.length; i++){ int n = image[i].length - 1; for(int j = 0; j <= n; j++,n--){ if(image[i][j] != ima
2021-11-30 12:44:27
87
原创 《LeetCode零基础指南》(第八讲) 二维数组
1.1351. 统计有序矩阵中的负数/**给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中负数的数目。 */class Solution {//二分法 public int countNegatives(int[][] grid) { int count = 0; for(int i = 0; i < grid.length; i++){ int left =
2021-11-29 11:20:30
519
原创 字符串算法(六) - 回文串
1.125. 验证回文串/*1.给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。2.说明:本题中,我们将空字符串定义为有效的回文串。 */class Solution { public boolean isPalindrome(String s) { if(s == null) { return true; } s = s.toLowerCase(); for(int i=
2021-11-28 20:18:26
350
原创 《C语言入门100例》(第27例) 穷举查找
1.1295. 统计位数为偶数的数字/*给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。*/class Solution { public int findNumbers(int[] nums) { int count = 0; for(int num : nums){ count += String.valueOf(num).length() % 2 == 0? 1: 0; } retu
2021-11-28 20:07:34
699
原创 《LeetCode零基础指南》(第七讲) 贪心
1.611. 有效三角形的个数/*给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 */class Solution { public int triangleNumber(int[] nums) { if(nums == null || nums.length < 3){ return 0; } Arrays.sort(nums);//先排序 int count = 0
2021-11-28 10:17:18
404
原创 《LeetCode零基础指南》(第六讲) C排序API
1.排序数组/**堆排序的思想就是先将待排序的序列建成大根堆,使得每个父节点的元素大于等于它的子节点。此时整个序列最大值即为堆顶元素,我们将其与末尾元素交换,使末尾元素为最大值,然后再调整堆顶元素使得剩下的 n-1 个元素仍为大根堆,再重复执行以上操作我们即能得到一个有序的序列。 */class Solution { public int[] sortArray(int[] nums) { heapSort(nums); return nums;
2021-11-27 17:00:27
1019
原创 [学习报告]《LeetCode零基础指南》(第五讲) 指针
1.重新排列数组class Solution { public int[] shuffle(int[] nums, int n) { int [] ans = new int [2 * n]; for(int i = 0; i <= n -1 ; i++){ ans[2*i] = nums[i]; ans[2*i + 1] = nums[i + n]; } return ans
2021-11-26 16:20:59
96
原创 《LeetCode零基础指南》(第四讲) 一维数组
1.搜索旋转排序数组class Solution { public int search(int[] nums, int target) { //将数组一分为二,其中一定有一个是有序的,另一个可能是有序,也能是部分有序。 //此时有序部分用二分法查找。无序部分再一分为二,其中一个一定有序,另一个可能有序,可能无序 int n = nums.length; if (n == 0) { return -1;
2021-11-24 23:00:16
105
原创 《算法零基础100讲》(第24讲) 字符串算法(四) - 字符计数法
数组中第 K 个独一无二的字符串/**1.独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串。2.给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 。如果 少于 k 个独一无二的字符串,那么返回 空字符串 "" 。3.注意,按照字符串在原数组中的 顺序 找到第 k 个独一无二字符串。 */class Solution { public String kthDistinct(String[] arr, int k) { .
2021-11-24 20:05:15
254
原创 《C语言入门100例》(第23例) 最简分数
1979. 找出数组的最大公约数给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。两个数的 最大公约数 是能够被两个数整除的最大正整数。/**给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。两个数的 最大公约数 是能够被两个数整除的最大正整数。 */class Solution {//辗转相减法... public int findGCD(int[] nums) { int maxNum = nums[0],minNum = n
2021-11-24 09:40:44
403
原创 [学习报告]《LeetCode零基础指南》(第三讲) 循环
1.求1+2+…+n求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)/**求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)*/class Solution { public int sumNums(int n) { boolean m = n > 1 && (n += sumNu
2021-11-24 09:33:44
348
原创 《LeetCode零基础指南》(第2讲) 函数)[学习报告]
本人基于Java语言实现!!!1.两数相除给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2(二分还是不熟练具体参考题解吧各位….)class Solution { public int divide(int d
2021-11-23 10:10:18
297
原创 进制转换求解
k进制表示下的各位数字和给你一个整数 n(10 进制)和一个基数 k ,请你将 n 从 10 进制表示转换为 k 进制表示,计算并返回转换后各位数字的 总和 。转换后,各位数字应当视作是 10 进制数字,且它们的总和也应当按 10 进制表示返回。思路:集合 + 短除法class Solution { public int sumBase(int n, int k) { ArrayList<Integer> list = new ArrayList<>(
2021-11-22 15:13:13
202
原创 二叉树的搜索
1.中序遍历中序遍历是二叉树的一种遍历方式,它先遍历左子树,再遍历根节点,最后遍历右子树。而我们二叉搜索树保证了左子树的节点的值均小于根节点的值,根节点的值均小于右子树的值,因此中序遍历以后得到的序列一定是升序序列(递增序列)class Solution { public boolean isValidBST(TreeNode root) { Deque<TreeNode> stack = new LinkedList<TreeNode>();
2021-11-21 23:10:58
265
原创 算法刷题小结
1.LeetCode1399给你一个整数 n 。请你先求出从 1 到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。思路:使用哈希表建立一个从数位和到原数字的哈希映射,对每一个数字 ,使键对应的值自增1。然后我们在值的集合中找到最大的值 m,再遍历哈希表,统计值为 m 的个数就可以了。class Solution { public int countLargestGroup
2021-11-21 21:29:24
308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人