来一个常见的面试题练练手

threenewbee threenewbee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
给定一个数组序列,表示股票的价格,比如说 100 103 109 102 95 101 110 112 103 110 112 112 113 103 103 93 88 94 91 88
现在问你,哪天买入哪天卖出获得的收益最大,输出日期,日期从1开始编号
比如如上序列,结果数5和13,表示95买入113卖出收益最大。

程序的框架已经写好,在solve里面实现,要求时间复杂度是O(n),一次遍历,并且空间复杂度是O(1)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace trade_kadane_problem
{
class Program
{
static int[] GenDataSet(int n)
{
int[] result = new int[n];
Random rnd = new Random();
int b = 100;
int u = 200;
int l = 20;
int dm = 20;
for (int i = 0; i < n; i++)
{
result[i] = b;
int r = rnd.Next(dm) - dm / 2;
if (b + r > u)
b = u;
else if (b + r < l)
b = l;
else
b = b + r;
}
return result;
}

static void Stdsolve(int[] data, out int b, out int s)
{
b = 1;
s = 1;
for (int i = 0; i < data.Length; i++)
for (int j = i; j < data.Length; j++)
{
if (data[s - 1] - data[b - 1] < data[j] - data[i])
{
b = i + 1;
s = j + 1;
}
}
}

static void solve(int[] data, out int b, out int s)
{
b = 1;
s = 1;
//在这里编写代码
}

static void Print(int[] data)
{
for (int i = 0; i < data.Length; i++)
{
Console.Write(data[i] + " ");
}
Console.WriteLine();
}

static void Main(string[] args)
{
int[] arr = GenDataSet(20);
Print(arr);
int b = 0;
int s = 0;
Stdsolve(arr, out b, out s);
Console.WriteLine("std {0}~{1}", arr[b - 1], arr[s - 1]);
solve(arr, out b, out s);
Console.WriteLine("solve {0}~{1}", arr[b - 1], arr[s - 1]);
}
}
}




--------------------------------
答案
        static void solve(int[] data, out int b, out int s)
{
b = 1;
s = 1;
int b1 = b;
for (int i = 1; i < data.Length; i++)
{
if (data[i] < data[b1 - 1])
b1 = i + 1;
if (data[i] - data[b1 - 1] > data[s - 1] - data[b - 1])
{
b = b1;
s = i + 1;
}
}
}
...全文

相关推荐

前端开发组件示例源码_f1b6a91d详解

前端开发组件示例源码_f1b6a91d,内容包含源码/脚本与使用说明文档,结构清晰、注释完整,适合学习参考与二次开发,下载解压即可查看。

鱿鱼助手

前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-Gjl4Gf1792158475

内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;Gjl4Gf1792158475 www.gblp.net www.gsctlq.com gezhixq.cn www.greendalian.com wap.gxqnm.com

2601_97196179

前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-5Z6jeSqI1792158476

内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;5Z6jeSqI1792158476 sdhmgggw168.com www.shangliangwangye.com www.sdbing.net migu.blsxex.abxlbz.sc.cn www.safespeed.net.cn

2601_97196179

高校如何通过科技报告服务提升技术转移转化效率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

科技服务机构如何提升服务大企业的技术诊断能力?.docx

科技服务机构如何提升服务大企业的技术诊断能力?

BIZKEEN
评论 57
收藏 已收藏
分享
返回顶部
threenewbee
非技术区 7,776 成员 63,111 内容