java
青枣早
学无止境
展开
-
剑指offer36-将二叉搜索树转换为递增的双向循环链表
题目:将二叉搜索树转换为递增的双向链表/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public Node() {} public Node(int _val) { val = _val; } public Node(int _val,Node _left,Node _right)原创 2020-09-16 15:44:09 · 254 阅读 · 0 评论 -
剑指offer54-二叉搜索树的第K大节点
**题目:**给定一棵二叉搜索树找出第K大节点。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } *///二叉搜索树中序遍历为增序排序,反之中序排序的倒叙就是降序排序,遍历的第k个节点即使第k大节点clas原创 2020-09-14 14:11:47 · 125 阅读 · 0 评论 -
剑指offer38-字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。class Solution { List<String> list = new LinkedList<>(); char[] c; public String[] permutation(String s) { if(s == null){ return new String[0]; }原创 2020-09-04 10:01:16 · 103 阅读 · 0 评论 -
剑指offer44-寻找最小k个数
/*方法基本思路:使用快速排序,但不需要对整个数组进行排序,进去找到分区索引为k的元素,该元素左边k个数就是最小的k个数。*/class Solution { public int[] getLeastNumbers(int[] arr, int k) { int left = 0; int right = arr.length-1; quickSort(arr,left,right,k); int[] res = new int原创 2020-09-03 19:07:50 · 109 阅读 · 0 评论 -
排序算法之快速排序-左右交换
public class FastSort { //排序方法入口,传入初始边界 public static void quickSort(int arr[]) { int right = arr.length -1; //初始边界 int left = 0; fastSort(arr,left,right); } public static void fastSort(int[] arr,int left,int right) { if(left > right) {原创 2020-09-03 14:37:27 · 354 阅读 · 0 评论 -
剑指offer68-二叉树的最近公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right原创 2020-09-02 23:58:41 · 528 阅读 · 0 评论 -
java中的锁与同步
锁机制:包括互斥锁、条件变量、读写锁*互斥锁提供了以排他方式防止数据结构被并发修改的方法。*读写锁允许多个线程同时读共享数据,而对写操作是互斥的。*条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。死锁:多个线程(进程)互相握有对方需要的资源且不放弃自身的资源,进入无限期地阻塞、相互等待的一种状态。产生死锁的必要条件: 1.互斥条件:一个资源每次只能被一个进程使用 2.不可剥夺条件:进程已获得资源,在未使用完之前原创 2020-09-01 16:59:03 · 280 阅读 · 0 评论 -
剑指offer55-计算二叉树深度
题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。方法一:二叉树广度优先BFS遍历,遍历二叉树每一层,每遍历一层res+1./** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int原创 2020-09-01 11:29:34 · 92 阅读 · 0 评论 -
剑指offer56-数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。class Solution { public int[] singleNumbers(int[] nums) { int k = 0; for(int n:nums){ k = k^n; //异或运算,相同为0,不同为1.表现在二进制中即必有某一位的值不同,一个为0.一个为1。原创 2020-08-31 20:41:51 · 91 阅读 · 0 评论 -
剑指offer18-删除链表的节点
题目:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。/**链表定义 * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode deleteNode原创 2020-08-31 19:15:38 · 62 阅读 · 0 评论 -
剑指offer13-机器人运动范围
**题目:**地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?来源:力扣(LeetCode)解法一:深度优先(dfs)class Solution原创 2020-08-31 17:18:53 · 98 阅读 · 0 评论 -
GC调优
GC 调优GC 调优目标基本有三个思路:降低 GC 频率,可以通过增大堆空间,减少不必要对象生成;降低 GC 暂停时间,可以通过减少堆空间,使用 CMS GC 算法实现;避免 Full GC,调整 CMS 触发比例,避免 Promotion Failure 和 Concurrent mode failure(老年代分配更多空间,增加 GC 线程数加快回收速度),减少大对象生成等。应用层调优HashMap 本身并不具备多线程并发的特性,在多个线程同时 put 操作的情况下,内部数组进行扩容时会导致 Ha原创 2020-08-27 10:55:40 · 184 阅读 · 0 评论 -
单例模式之饿汉式与懒汉式创建
饿汉式由于提前创建好对象,天生是线程安全的public class HurryBank {private HurryBank(){}private static final HurryBank INSTANCE = new HurryBank();private static HurryBank getInstance(){return INSTANCE;}}懒汉式则在调用方法时才创建对象,故存在线程不安全的可能,使用synchronized同步锁来保证线程安全class LazyBan原创 2020-08-24 14:55:51 · 121 阅读 · 0 评论 -
实习-查询交易监控信息学习
一、JSP相关知识1、request对象隐含对象request是javax.servlet.HttpSeverletRequest接口实现类的对象,代表从客户端用户发送过来的请求。使用request对象可以获得客户端的信息以及用户提交的数据或参数,每次客户端请求都会产生一个request实例,请求结束后销毁request。对于两个不同的.jsp文件之间传递参数使用 request.setArrtibutes(‘password’,1234);与 password = request.getArr原创 2020-08-18 14:24:42 · 148 阅读 · 0 评论 -
笔试碰到的算法题目(不保证正确)-4倍逆转数
题目:逆转数定义:例如:x = 123,y = 321,称y为x的的逆转数,新定义,例如 x=2178 ;y = 4x = 8712;这个时候称y为x得4倍逆转数。求给出整数m内,求有几对4倍逆转数,并输出。下面是我自己写的解法,比较笨拙,使用的char型数组来判断。public class Test { public static void main(String[] args) { Scanner sca = new Scanner(System.in);原创 2020-08-15 23:16:38 · 214 阅读 · 0 评论 -
JDBC“事务” 相关知识
事务在java中表示为执行数据库操作过程中更新数据库中各种数据项的一个程序执行单元(unit),事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。注:数据项是数据的不可分割的最小单位,如“name”、“id”、“age”通常在由事务开始(begin transaction)操作1:操作2:..…事务结束(end transaction)之间执行的全体操作组成。1、事务的ACID原则(1)原子性 :事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改原创 2020-07-27 13:23:12 · 180 阅读 · 0 评论 -
个人对面向接口编程的理解
使用面向接口编程的好处例1:1、定义一个方法接口2、实现类:3、配置xml4、业务实现与以往的面向实现相比,即业务逻辑想实现 sayHello()方法的功能需要面向接口编程由于有个第三方中转商,将 实现类HelloImpl 命名为hello,通过hello在业务逻辑创建实现对象 helloApi比如这个时候如果我们想使用类 HelloOther实现 helloApi ,只需要将配置文件更改为这样不需要修改业务层的代码,业务代码不变即可,仍可以写成原来的样子,是不是很方便,原创 2020-07-23 11:21:42 · 218 阅读 · 0 评论 -
win10下java环境配置仅javac运行报错问题解决
按照以往的环境变量配置方法配置java运行环境时会出现 运行java,java -version都正常,但运行javac却会报错的现象。这时因为最新的jdk安装会在系统变量里自动配置java环境变量,Path中会有C:\Program Files (x86)\Common Files\Oracle\Java\javapath这个路径,但其自动配置的路径文件夹中没有javac程序,当我们按照...原创 2020-04-14 18:14:21 · 626 阅读 · 0 评论