
数据结构/算法
橘子味的阳光
难得世界那么美
展开
-
22,23合并K个链表链表
21. 合并两个有序链表迭代法/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { l3 := new(ListNode) head := l3 for l1!=nil &&原创 2021-07-07 22:54:21 · 398 阅读 · 2 评论 -
递归-跳台阶/爬楼梯
70. 爬楼梯前往楼梯顶部最后一跳要么是1台阶, 要么是两阶, 所以只要把x-1阶的部署加上x-2阶的步数,就能算出x阶的步数了f(x)=f(x−1)+f(x−2)func climbStairs(n int) int { if n==1 { return 1 } if n==2 { return 2 } return climbStairs(n-1) + climbStairs(n-2)}但是 超时了, 因为进行了重复计原创 2021-07-06 22:12:16 · 206 阅读 · 0 评论 -
leetcode617-java合并二叉树
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。合并二叉树两个二叉树的对应节点可能存在以下三种情况,对于每种情况使用不同的合并方式。如果两个二叉树的对应节点都为空,则合并后的二叉树的对应节点也为空;如果两个二叉树的对应节点只有一个为空,则合并后的二叉树的对应节点为其中的非空节点;如果两个二叉树的对应节点都不为空,则合并后的二叉树的对应节点的值为两个二叉树的对应节点的值之和,此时需要显性合并两原创 2021-01-21 17:41:05 · 161 阅读 · 0 评论 -
算法-大整数求和|乘法
以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤:第一步创建2个数组,把整数倒序存储整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置。之所以倒序存储,更加符合我们从左到右访问数组的习惯。创建结果数组,结果数组的最大长度是较大整数的位数+1第二步遍历两个数组,从左到右按照对应下标把元素两两相加,就像小学生计算竖式一样。最先相加的是...原创 2018-12-02 11:13:53 · 781 阅读 · 0 评论 -
DP-求最大值求最优解
Description分配了8个任务,时间不冲突的情况下,挣得工资最多Solution1.求OPT(i)如果选了第i个,公式为第i个能挣得钱数加上上一个能选的OPTVi+OPT(prev(i))如果没选第i个,公式就是求上一个能赚的最多的钱数OPT(i-1)解释OPT(i)做第i个任务,能赚多少钱prev(i)做第i个任务,上一个能做的任务的位置2.求出前置任务3....原创 2018-11-22 22:06:50 · 905 阅读 · 0 评论 -
算法-简单算法入门-java
1.反转数123=321-123=-321100=1import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); ...原创 2018-10-04 23:09:49 · 234 阅读 · 0 评论