自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 面试宝典-多个表进行连接操作大表在前还是小表在前

答案:小表在前。假设A表200条数据,B表20万条数据。两个做连接操作:如果小的循环在外层,对于表连接来说就只连接200次 ;如果大的循环在外层,则需要进行20万次表连接,从而浪费资源,增加消耗 ;小表驱动大表的主要目的是通过减少表连接创建的次数,加快查询速度 。...

2021-04-27 15:22:22 4341

原创 二维数组每一维度的长度怎么求

class Solution { public int minPathSum(int[][] grid) { int m=grid.length; //m代表行数 int n=gird[0].length; //n代表列数 }}

2021-04-07 10:02:47 1053

原创 动态规划做题套路

动态规划做题套路:第一步:定义dp数组的含义确定是一维数组还是二维数组(这个根据条件的多少来判断),正确的定义dp数组的含义是做题的关键。以leetcode53题最大子序和为例:dp[i]的含义为以nums[i]这位为结尾的的最大子数组和为dp[i]。第二步:确定初始值。以leetcode53题最大子序和为例:dp[i]=nums[i],因为每一位起码可以自己单独组成一个子序列,和就是自己本身。第三步:写出状态转移方程。以leetcode53题最大子序和为例:dp[i]=Math.max(

2021-03-22 09:38:20 172

原创 面试宝典-死锁

什么是死锁:指的是多个线程在运行过程中为了争夺资源而出现的僵局,如果没有外力作用,那么这些线程都无法完成。例子:进程A现在拥有了资源1,并且想要请求资源2,但是资源2被进程B占有,并且此时进程B也在请求资源1,形成了他们同时都想申请对⽅的资源,所以这两个线程就会互相等待⽽进⼊死锁状态。死锁必备的四个条件:**互斥条件:**资源在某个时刻只能被一个进程所占用。(排他性控制)**请求与保持条件:**当前进程由于请求资源而阻塞时,对已拥有的资源保持不放。**不剥夺条件:**当前进程已经获得的资源在未使用

2021-03-09 19:57:26 1283

原创 并发与并行的区别

并发和并行的共同点:都是为了让多个任务执行的更加有效率并发:在同一时间段内,有多个任务在执行。并行:在同一时刻,有多个任务在执行。

2021-03-09 19:29:44 97

原创 leetcode-322-零钱兑换

题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。分析:第一想法是想枚举出所有的结果,然后在这些结果中选择最少硬币数量的组合,因此套用回溯法(即for循环+bfs),但是运行超时,动态规划解法才是本题正解。class Solution { public int coinChange(int[] coins, int amount) {

2021-01-08 22:38:13 152

原创 leetcode-279-完全平方数

标题给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。解释:此题属于动态规划。本来想用回溯,但是测试用例超时了。1.动态规划就是求dp这个数组中的值,此题首先让dp[i]=i,即i这个数最坏的情况下是由i个最小完全平方数(也就是1)求和组成的。2.然后依次算出 dp[i减去所有小于等于它的完全平方数]+1和当前dp[i]的最小值,其中+1代表了它减去的那个完全平方数占的1位。class Solution {

2021-01-06 21:59:05 114

原创 leetcode-39-组合总数

题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。其中candidates 中的数字可以无限制重复被选取。解释1.主要考察回溯算法,给出没有剪枝的解法2.回溯的主要思想就是一个for循环和一个dfs。其中for循环的作用就是遍历每层的所有节点,dfs的作用就是分别对这些节点进行深度优先遍历3.回溯算法就是穷举所有可能出现的结果,可以通过剪枝操作来把绝对不可能的方案排除掉,进行优化。class

2021-01-06 20:05:56 114

转载 TPCH 22条SQL语句分析

TPCH 22条SQL语句分析https://yq.aliyun.com/articles/149715

2021-01-05 18:38:47 846

原创 java中数字和字符串、字符数组的转换

java中数字和字符串、字符数组的转换:1:数字转字符串 String str=Integer.toString(N); String str=String.valueOf(N);2:数字转字符数组 char [] c=Integer.toString(N).toCharArray(); char [] c=String.valyeOf(N).toCharArray();3:字符串转数字 int a=Integer.parseInt(str);4:字符数组转数字 char [] c

2020-12-22 09:36:40 995

原创 C++中#include<>和#include““的区别

C++中#include<>和#include""的区别#include“”优先从自己定义的源文件中查找,找不到之后才去标准库文件中查找。#include<>优先从引入的标准库文件中查找。<里面一般都放标准库.h。

2020-12-18 16:17:29 1217 1

原创 翻转单链表

翻转单链表题目描述:给定一个单链表1-2-3-4-5,翻转成5-4-3-2-1。public ListNode reverse(ListNode head){ if(head==null) return head; ListNode tail=head; head=head.next; tail.next=null; while(head!=null){ ListNode temp=head.nex

2020-10-20 14:24:20 101

原创 寻找单链表的中间节点

找到链表的中间节点题目描述给定一个单链表,求中间节点。public ListNode findMid(ListNode head){ ListNode slow=head; ListNode fast=head; while(fast.next!=null&&fast.next.next!=null){ slow=slow.next; fast=fast.next.next; } return slow;}...

2020-10-20 14:12:59 159

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除