当前位置: 首页 > news >正文

网站制作小常识厦门seo公司到1火星

网站制作小常识,厦门seo公司到1火星,杭州建设信用网网站,建网站软件下载文章目录 1. 汉诺塔问题题干:算法原理:代码: 2. 合并两个有序链表题干:算法原理:代码: 3. 反转链表题干:算法原理:代码: 4. 最大子数组和题干:算法原理&#…

文章目录

  • 1. 汉诺塔问题
    • 题干:
    • 算法原理:
    • 代码:
  • 2. 合并两个有序链表
    • 题干:
    • 算法原理:
    • 代码:
  • 3. 反转链表
    • 题干:
    • 算法原理:
    • 代码:
  • 4. 最大子数组和
    • 题干:
    • 算法原理:
      • 1. 状态表示:
      • 2. 状态转移方程
      • 3. 初始化
      • 4. 填表顺序
      • 5. 返回值
    • 代码:
  • 5. 环形子数组的最大和
    • 题干:
    • 算法原理:
      • 1. 状态表示:
      • 2. 状态转移方程
      • 3. 初始化
      • 4. 填表顺序
      • 5. 返回值
    • 代码:

1. 汉诺塔问题

在这里插入图片描述
原题链接


题干:

在这里插入图片描述
在这里插入图片描述


算法原理:

利用递归算法

将x柱子上的一堆盘子,借助 y柱子,转移到z 柱子上面

递归函数流程:

  1. 当前问题规模为 n=1 时,直接将 A 中的最上面盘子挪到 C 中并返回
  2. 递归将 A 中最上面的 n-1 个盘子挪到 B 中
  3. 将 A 中最上面的⼀个盘子挪到 C 中
  4. 将 B 中上面 n-1 个盘子挪到 C 中

代码:

class Solution {public void hanota(List<Integer> a, List<Integer> b, List<Integer> c) {dfs(a, b, c, a.size());}public void dfs(List<Integer> a, List<Integer> b, List<Integer> c, int n) {if(n == 1) {c.add(a.remove(a.size() - 1));return;}dfs(a, c, b, n - 1);c.add(a.remove(a.size() - 1));dfs(b, a, c, n - 1);}
}

2. 合并两个有序链表

在这里插入图片描述

原题链接


题干:

升序 链表
新链表是通过拼接给定的两个链表的所有节点组成的
在这里插入图片描述


算法原理:

  1. 重复子问题(函数头的设计)
    合并两个有序链表

  2. 只关心一个子问题咋做什么(函数体的设计)
    选择两个头结点中较小的结点作为最终合并后的头结点,然后将剩下的链表交给递归函数去处理

  3. 递归的出口
    谁为空返回另一个


代码:

class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if(l1 == null) {return l2;}if(l2 == null) {return l1;}if(l1.val <= l2.val) {l1.next = mergeTwoLists(l1.next, l2);return l1;}else {l2.next = mergeTwoLists(l1, l2.next);return l2;}}
}

3. 反转链表

在这里插入图片描述
原题链接


题干:

单链表的头节点 head ,反转链表,并返回反转后的链表
在这里插入图片描述


算法原理:

利用递归

  1. 从宏观角度
    1)让当前节点后面的链表先逆序,并且把头结点返回
    2)让当前节点添加到逆置后的链表的后面
  2. 将链表看成一棵树
    仅需做一次 dfs 即可
    后序遍历
    在这里插入图片描述

代码:

class Solution {public ListNode reverseList(ListNode head) {if(head == null || head.next == null) {return head;}ListNode newheader = reverseList(head.next);head.next.next = head;head.next = null;return newheader;}
}

4. 最大子数组和

在这里插入图片描述
原题链接


题干:

一个整数数组 nums
找出一个具有最大和的连续子数组


算法原理:

1. 状态表示:

dp[i] 表示:以 i 位置为结尾的所有子数组中的最大和
在这里插入图片描述

2. 状态转移方程

在这里插入图片描述
dp[i] = max(nums[i], dp[i - 1] + nums[i])

3. 初始化

  1. 辅助结点里面的值要「保证后续填表是正确的」
  2. 「下标的映射关系」

在这里插入图片描述

4. 填表顺序

从左往右

5. 返回值

整个dp表的最大值


代码:

class Solution {public int maxSubArray(int[] nums) {int n = nums.length;int[] dp = new int[n + 1];int ret = Integer.MIN_VALUE;for(int i = 1; i <= n; i++) {dp[i] = Math.max(nums[i - 1], dp[i - 1] + nums[i - 1]);ret = Math.max(ret, dp[i]);} return ret;}
}

5. 环形子数组的最大和

在这里插入图片描述
原题链接


题干:

长度为 n 的环形整数数组 nums
返回 nums 的非空 子数组 的最大可能和


算法原理:

在这里插入图片描述

1. 状态表示:

在这里插入图片描述

2. 状态转移方程

在这里插入图片描述

f[i] = max(nums[i], f[i - 1] + nums[i])
在这里插入图片描述

g[i] = min(nums[i], g[i - 1] + nums[i])

3. 初始化

  1. 辅助结点里面的值要「保证后续填表是正确的」
  2. 「下标的映射关系」
  3. 在这里插入图片描述

4. 填表顺序

从左往右

5. 返回值

  1. 先找到 f 表里面的最大值 -> fmax
  2. 找到 g 表里面的最小值 -> gmin
  3. 统计所有元素的和 -> sum
  4. 返回 sum == gmin ? fmax : max(fmax, sum - gmin)

代码:

class Solution {public int maxSubarraySumCircular(int[] nums) {int n = nums.length;int[] f = new int[n + 1];int[] g = new int[n + 1];int sum = 0;int fmax = Integer.MIN_VALUE;int gmin = Integer.MAX_VALUE;for(int i = 1; i <= n; i++) {int x = nums[i - 1];f[i] = Math.max(x, x + f[i - 1]);fmax = Math.max(fmax, f[i]);g[i] = Math.min(x, x + g[i - 1]);gmin = Math.min(gmin, g[i]);sum += x;}return sum == gmin ? fmax : Math.max(fmax, sum - gmin);}
}
http://www.hkea.cn/news/493583/

相关文章:

  • 东莞圆心科技网站开发网页搜索
  • 日照网站建设价格百度推广怎么优化关键词的质量
  • 竭诚网络网站建设开发百度搜索竞价推广
  • 浙江住房和城乡建设厅报名网站下拉关键词排名
  • 银川哪里做网站百度网址名称是什么
  • 合肥公司网站建设价格低西安网络科技公司排名
  • 怎么样建设个人网站企业文化建设
  • 如何知道网站有没有备案成都seo公司
  • wordpress 艺术主题南京网络优化公司有哪些
  • 贵阳网站备案百度网站优化方案
  • 单位网站建设论文怎么做竞价托管
  • 建筑公司网站有哪些谈谈自己对市场营销的理解
  • 做ppt音乐怎么下载网站企业培训课程有哪些
  • magento网站建设网站优化排名软件网站
  • 做生鲜食品最好的网站网络推广及销售
  • 销售管理系统需求分析长沙seo代理
  • 站长网站查询深圳百度关键字优化
  • 用net语言做网站平台好不好企业培训师资格证报考2022
  • 成都定制网站设竞价推广遇到恶意点击怎么办
  • 制作视频网站建设友链交易网
  • 做外贸是不是要有网站腾讯企点app下载安装
  • 网站开发快递文件国外网站怎么推广
  • 网站和搜索引擎站长论坛
  • 做违法网站会怎样外贸独立站怎么建站
  • 云主机建网站教程深圳全网推互联科技有限公司
  • 做网站赚50万谷歌搜索引擎363入口
  • 台州网站设计外包网页制作公司排名
  • 网站建设投标文件范本亚马逊提升关键词排名的方法
  • 学做网站需要多长时间免费推广平台排行
  • wordpress运行php 404360优化大师下载