![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法&leetcode
文章平均质量分 79
xfjjs江城子
这个作者很懒,什么都没留下…
展开
-
有序链表合并
public static Node mergeTwoList(Node head1, Node head2) { // 递归结束条件 if (head1 == null && head2 == null) { return null; } if (head1 == null) { return head2; } if (head2 =...原创 2019-12-05 21:28:45 · 107 阅读 · 0 评论 -
二叉树的层序遍历的其它问题
一:求二叉树的宽度,打印二叉树最左侧节点,最右侧节点/*** 层序遍历+输出最左节点+求最宽度* @param root* @return*/public static int getMaxWidth(BinaryTreeNode root) { Queue<BinaryTreeNode> queue = new LinkedList<>(); if (...原创 2019-12-05 16:32:20 · 110 阅读 · 0 评论 -
给定单链表,求距离终点为k的结点
思路: 两个结点 ,p,q。初始状态都指向head结点。 然后p先走k步,然后 p,q再一起往后走,直到p走到链表尾部,则此时q指向的即为倒数第k个结点。 int find(ListNode head,int k) { ListNode p=head; ListNode q=head; if (head==null) { return -1; } while(p!=...原创 2019-12-02 16:37:12 · 504 阅读 · 0 评论 -
LeetCode 53 最大求子序和
我自己写的就两种暴力法。暴力法1 时间复试杂O(n3) public static int maxSubArray(int[] nums) { int len = nums.length; if (len == 0) { return 0; } int max = Integer.MIN_VALUE; int sum; for (int i = 0; i &...原创 2018-12-05 21:52:10 · 150 阅读 · 0 评论 -
【算法】求数组第二大的数
private static int getMax2(int[] arr) { int max = arr[0]; int max2 = arr[0]; for (int i = 0; i < arr.length; i++) { if (max <= arr[i]) { ...原创 2019-10-21 21:54:45 · 654 阅读 · 0 评论 -
冒泡排序
for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length-1-i; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; ...原创 2019-10-03 21:30:13 · 108 阅读 · 0 评论 -
判断单链表是否有环
public class link { class ListNode { int value; ListNode next; ListNode(int x) { value = x; next = null; } } private ListNode hea...原创 2019-09-10 21:09:35 · 520 阅读 · 0 评论 -
二分查找算法-java
//查询关键字的下标 public static int bs(int[] a, int low, int high, int key) { while (low <= high) { int mid = (low + high) / 2; if (key > a[mid]) { ...原创 2019-08-23 15:54:55 · 100 阅读 · 0 评论 -
java 反转链表
public BinaryTree reverseList(BinaryTree head) { //排除空表和单节点情况 if (head == null || head.getNext() == null) { return head; } BinaryTree cur = null; ...原创 2019-08-23 18:58:38 · 86 阅读 · 0 评论 -
BFS,DFS 遍历 java版
广度优先遍历类似于二叉树的层序遍历。采用队列的形式实现。public class BFS { public List<Integer> bfs(BinaryTreeNode root) { ArrayList<Integer> lists = new ArrayList<>(); if (root == null) { return l...原创 2019-06-18 17:27:50 · 406 阅读 · 0 评论 -
二叉树的遍历 java
结点类:public class BinaryTreeNode { private int data; private BinaryTreeNode left; private BinaryTreeNode right; public BinaryTreeNode() { }}二叉树的插入:// 插入节点public void insert(int key, int...原创 2019-06-18 16:41:17 · 117 阅读 · 0 评论 -
算法 求两数之和 双指针
题目描述:给定 nums = [2, 7, 11,15],target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]算法原理: 先对数组进行排序。然后使用两个指针,一个指向表头,一个指向表尾。然后计算两个下标的值,大于目标值,则右指针向前移动,小于目标值的话,则左指针向前移动。public static int[]...原创 2019-06-26 11:15:15 · 1088 阅读 · 1 评论 -
算法四的一些使用事项
算法四里面经常会出现In.readInts(args[0]);传入一个文本文件。有以下几种方案。1:先把文件复制到项目中,然后右击Run As-->Run Configurations-->Arguments,直接输入文件名就可以了。也可以直接在里面引用全路径。2:Run As-->Run Configurations-->Commom-->...原创 2019-01-09 22:42:21 · 1119 阅读 · 0 评论 -
快速排序的java代码实现
快速排序的原理参考经典算法动画java代码实现:// 快速排序的切分 每次都以当前表第一个元素作为基准值public static int partition(int[] a, int low, int high) { // 将数组切分为a[low..i-1],a[i],,a[i+1..high] int pivot = a[low];// 将当前表中第一个元素设为基准值 ...原创 2019-01-10 21:28:28 · 405 阅读 · 0 评论 -
二路归并排序
1.算法解释2.算法轨迹3.算法的java实现public static void merge(int a[], int low, int mid, int high) { int i = low, j = mid + 1; int[] aux = new int[a.length];//复制数组 for (int k = low; k < a.length; k...原创 2019-01-10 20:13:46 · 827 阅读 · 0 评论