![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
oh my 桂桂
努力当个打工人
展开
-
链表——两数相加
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode root= new ListNode(0); ListNode cursor = root; int carry = 0; //只要有一个不为空就继续 while(l1 != null || l2 != null){ //判断..原创 2021-03-04 14:16:36 · 93 阅读 · 1 评论 -
动态规划(2)
动态规划非常多在数组中取一定条件子集的题动态规划最重要的还是要找到状态方程股票买卖问题股票买卖是非常经典的动态规划的题给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。这是股票买卖的动态方程: for(int i=1;i<prices.原创 2021-02-21 11:17:03 · 95 阅读 · 0 评论 -
回溯算法
原创 2021-02-18 17:02:27 · 85 阅读 · 0 评论 -
N皇后
package Leetcode;public class placeQueens { public static void main(String[] args) { new placeQueens().placeQueens(8); } /* 数组索引是行号,数组元素是列号 */ int[] cols; //多少种方法 int ways; void placeQueens(int n){ i原创 2021-02-18 16:51:49 · 56 阅读 · 0 评论 -
动态规划
package Leetcode;public class DProgrammer { public static void main(String[] args) { System.out.println(coins(50)); } /* coins(n-25)+1第一次选择25所需要的最少硬币 coins(n-20)+1第一次选择25所需要的最少硬币 coins(n-5)+1第一次选择25所需要的最少硬币 coins(n-1).原创 2021-02-18 16:51:06 · 56 阅读 · 0 评论 -
算法题1
题目:给定n,构造长度为n的排列,使满足j<j<k的aj,ai,ak,不出现ak+ai=aj*2public class test01 { public static void main(String[] args) { Solve solve = new Solve(); solve.solve(1,10,0); for (int i=1;i<= 10;i++){ System.out.print(solv原创 2021-02-18 12:46:34 · 113 阅读 · 0 评论 -
归并排序
import java.util.Arrays;public class TestMain { public static void main(String[] args) { int[] array = {13,56,2,8,19,34,29}; System.out.println(Arrays.toString(array)); mergeSort(array,0,array.length-1); System.out.pr.原创 2021-02-15 20:24:47 · 48 阅读 · 0 评论 -
数组转化为单向链表再顺序添加
public class SingListNode { //链表类 int val; SingListNode next; public SingListNode(int val) { this.val = val; }}public class SingListNodeInser { SingListNode root ; /* 将数组转化为链表 */ publ原创 2021-02-12 18:25:04 · 296 阅读 · 1 评论 -
二分法查找
1、循环查找public class BinarySearch { public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7}; int index = binarySearch(arr,5); System.out.println(index); } public static int binarySearch(int[] arr,int item){.原创 2021-02-11 15:43:01 · 110 阅读 · 0 评论 -
快速排列
快速排列思想:把数组中最左边数当作基准数,然后从两边进行检索先从右边检索(与基准数反方向)比基准数小的,再从左边检索比基准数大的如果检索到了就停下,然后交换这两个元素,然后继续检索当左边索引与右边索引检索到同一个值时,交换基准数与该位置的值基准数和相遇位置的数交换完成,表示第一轮排序结束,此时基准数左边的值都比他小,右边都比他大以后先排基准数左边,排完后再排右边,方式和第一轮一样import java.util.Random;public class QuickSort { .原创 2021-02-10 13:00:04 · 131 阅读 · 0 评论