![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题
北渚007
这个作者很懒,什么都没留下…
展开
-
算法题——剑指Offer:合并两个有序链表
题目描述:合并两个有序链表,要求合并后的新链表不减思路:current 为新链表中的当前节点,循环比较 list1 与 list2 的当前节点,取较小者作为 current 的 next 节点,对应指针后移,直至有一个链表比较完毕,再将current指针指向另一个链表的剩余节点(都是比较大的值)class LinkedListNode { int val; LinkedListNode next; LinkedListNode(int val) [ this.val = val; }}原创 2020-07-30 14:54:39 · 106 阅读 · 0 评论 -
算法题——剑指Offer:链表中倒数第K个节点
思路:两个指针沿着链表往后找,before 比 after 先走K个节点:若链表长度大于等于K,当 before 走到最后一个节点的next时,after即倒数第K个节点;若链表长度小于K,返回 null。class LinkedListNode { int val; LinkedListNode next; LinkedListNode(int val) { this.val = val; }}public class Solution { public LinkedListNode原创 2020-07-30 14:15:49 · 73 阅读 · 0 评论 -
算法题——剑指Offer:从尾到头打印链表
import java.util.Stack;import java.util.ArrayList;Class LinkedListNode { int val; LinkedListNode next; LinkedListNode(int val) { this.val = val; }}public void Solution { public}原创 2020-07-30 11:48:09 · 59 阅读 · 0 评论 -
算法题——剑指Offer24:反转链表
class LinkedListNode { int val; LinkedListNode next; LinkedListNode(int val) { this.val = val; }}public class Solution { public LinkedListNode ReverseLinkedList(LinkedListNode head) { if(head==null) {原创 2020-07-29 21:04:56 · 83 阅读 · 0 评论 -
算法题——数组最大子序和
题目:例如,1 -2 3 10 -4 7 2 -5,最大子序和为18 :3,10,-4,7,2很容易想到DP(动态规划)解法,最大子序必然是以某个数结尾的,用数组 dp[i] 表示以 arr[i] 结尾时的最大子序和,在 dp[0] ~ dp[n] 中取最大值即为所求。dp[i]的求法:当 dp[i-1] 大于0时,dp[i] = dp[i-1] + arr[i],即直接在之前的最大子串上加第 i 个数;当 dp[i-1] 小于0时,dp[i] = arr[i],因为值为负,不再加之前的子原创 2020-07-29 20:45:07 · 140 阅读 · 0 评论 -
算法题——排序之冒泡排序
最好的情况:public int[] BubbleSort(int[] arr) { if(arr==null) return null; int len = arr.length(); for(int i=1; i<len; i++) { boolean flag = false; for(int j=0; j<len-i; j++) if(arr[i]>arr[i+1]) { flag = true; int temp = arr[i];原创 2020-07-29 11:49:58 · 102 阅读 · 0 评论 -
算法题——用两个栈实现队列&用两个队列实现栈
用两个栈实现队列:stack1负责push,stack2负责pop。 push:若queue2不为空,将queue2中的元素全部转移到queue1中,再向queue1中插入新数据。pop:若queue1不为空,将queue1中的数据全部转移到queue2中,queue2中弹出一个数据作为输出值。//实现队列的push和pop方法import java.util.Stack;public class StackToQueue { Stack<Integer> stack1 = new原创 2020-07-27 20:55:11 · 168 阅读 · 0 评论 -
算法题——跳台阶及变态跳台阶
**算法题——跳台阶**题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序算不同的结果)解题思路:跳n级台阶只有2中可能:假如最后一次跳了1级台阶,那么剩下的是 n-1 级台阶,跳法 f(n-1) 种;假如最后一次跳了2级台阶,那么剩下的是 n-2 级台阶,跳法 f(n-2) 种。故 f(n) = f(n-1) + f(n-...原创 2020-04-08 14:11:14 · 226 阅读 · 0 评论