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

网站开发实践体会wordpress文章点不开

网站开发实践体会,wordpress文章点不开,wordpress 站点收录,嘉兴做毛织的有哪些网站文章目录 前言一、题目要求二、算法设计及代码实现2.1 算法思想2.2 代码实现 前言 本文是【程序员代码面试指南#xff08;第二版#xff09;学习笔记】C#版算法实现系列之一#xff0c;用C#实现了《程序员代码面试指南》#xff08;第二版#xff09;栈和队列中的可见的… 文章目录 前言一、题目要求二、算法设计及代码实现2.1 算法思想2.2 代码实现 前言 本文是【程序员代码面试指南第二版学习笔记】C#版算法实现系列之一用C#实现了《程序员代码面试指南》第二版栈和队列中的可见的山峰对数量。文中的示意图也都来自此书。 一、题目要求 给出一个全为正整数的循环数组每一个数字表示一个山峰的高度找出一共有几对山峰可以相互看到。 相互看到的条件如果两座山峰之间不管是顺序看也好逆序看也罢只要有一个方向可以达到两座山峰之间的山的高度都小于两座山峰的要求那么就说明相互可以看到。 如图最下方的5可以和左边的3相互看到因为中间的2 3且2 5。最下面的5和最右边的5也是相互可见的虽然顺时针方向有一个5不小于5但是逆时针方向中间只有4和3是满足要求的所以互相可见。 二、算法设计及代码实现 2.1 算法思想 概述首先要确定一点假如A能看到B那么其实计算过程中如果还计算B能看到A就重复了。而又因为低山峰找高山峰较为方便这里确定为小找大。确定为小找大后就可以定义一个单调递增的栈保证栈内元素始终为栈顶到栈底依次增大。如果遇到相同大小的元素那么只需要在该元素位置记录次数加一即可。首先将栈底放入最大值随后遍历数组。遇到不符合单调性的元素入栈时说明栈顶元素找到了前进方向的比自己高的山了由于栈底肯定大于栈顶也就说明栈顶两端都满足小找大的条件了不可能找到更多对的山峰了这时就可以出栈计算结果了。遍历结束一遍后还会有剩余元素这时依旧按照小找大规则进行出栈计算即可。 详细步骤 1、定义一个记录值和出现次数的结构体这里选择用类是因为结构体是值类型修改不如引用类型方便。 2、初始化一个栈和记录结果的变量。 3、找出最大值和最大值所在的序列作为遍历的起点。 4、循环遍历一遍数组遍历每个元素都做以下操作 1栈空直接放入元素。 2栈顶小于当前要放入的元素那么就出栈出栈累加结果此时找到的山峰对数为2 * times times * (times - 1) / 2。 3如果相等则直接累加出现次数。 4符合单调性则直接放入。 5、遍历结束后还有剩余元素此时分为三个阶段 1如果剩余元素大于等于三个逐个出栈直到剩下2个为止。出栈时累加结果公式为2 * times times * (times - 1) / 2。 2倒数第二个元素的出栈记最后一个元素的重复次数为lt那么累加结果公式为times * (lt 1 ? 2 : 1) times * (times - 1) / 2 3最后一个元素的出栈公式为times * (times - 1) / 2。 2.2 代码实现 public class Record(int value, int times) {public int value value;public int times times; }public static int GetVisibleNum(int[] arr) {int n arr.Length;StackRecord stack new();int ans 0;// 找出最大值和位置int max 0;int maxIndex -1;for (int i 0; i n; i) {if (arr[i] max) {max arr[i];maxIndex i;}}// 从最大值的位置开始遍历for (int i maxIndex; i n maxIndex; i) {int index i % n;int value arr[index];// 如果栈为空, 直接入栈if (stack.Count 0) {stack.Push(new Record(value, 1));continue;}// 栈顶元素小于当前元素, 则出栈while (stack.Peek().value value) {Record record stack.Pop();ans record.times * 2 record.times * (record.times - 1) / 2;}// 栈顶元素等于当前元素, 则更新栈顶元素的次数if (stack.Peek().value value) {Record record stack.Peek();record.times;}// 栈顶元素大于当前元素, 则入栈else {stack.Push(new Record(value, 1));}}// 栈中剩余元素while (stack.Count 2) {Record record stack.Pop();ans record.times * 2 record.times * (record.times - 1) / 2;}if (stack.Count 2) {Record record stack.Pop();Record last stack.Peek();ans record.times * (last.times 1 ? 2 : 1) record.times * (record.times - 1) / 2;}if (stack.Count 1) {Record record stack.Pop();ans record.times * (record.times - 1) / 2;}return ans; }
http://www.dnsts.com.cn/news/121236.html

相关文章:

  • wordpress 添加文件优化网站的目的
  • 三元里网站建设广告推广语
  • 长沙专业的网站建设企业全球装修公司前十强
  • 资讯网站 怎样 增强用户粘度湖南seo网站策划
  • 湖南手机响应式网站建设企业沈阳网页设计培训
  • 做国外网站做外贸京东网站建设策划书
  • 大型网站空间费用个人网站里在哪点击模版
  • 百事可乐网站建设优缺点seo关键词优化指南
  • 网站开发合同缺陷php网站开发防注入
  • 专业网站快速电商网站前端模板
  • 建设网站要求和注意事项怎么推广自己做的网站吗
  • 企业网站seo网站怎么做更新吗
  • 地下城钓鱼网站怎么做小说短篇做的好的网站
  • 南京做电商网站的公司简介做企业网站备案收费吗
  • 网站直播间 是怎么做的网站 制作登录
  • 企业网站建设前期准备大前端 wordpress
  • 嘉定公司网站设计美食网站策划书范文
  • 国内网站设计案例欣赏网页设计暑期班
  • 滨湖区知名做网站价格h5网站设计报价
  • 唐河永琚建筑公司网站电脑怎么制作图片
  • vi设计网站运动康复慧聪网seo页面优化
  • 医院如何做网站策划为什么不推荐大家去外包公司
  • 网站建设要哪些工作链接制作
  • 西双版纳网站建设公司常州市网站建设公司
  • 网站首页原型图咋做一般做企业网站需要什么资料
  • 网页在线制作网站源码网站建设与管理插图
  • 诚信快捷小企业网站建设做股权众筹的网站
  • 淘宝网站开发的意义后台管理网站开发
  • 唐河微网站建设百度网络营销中心
  • 百度手机模板网站青海城乡建设部网站首页