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

企业网站建设要注意哪方面网页设计首页制作

企业网站建设要注意哪方面,网页设计首页制作,adobe 做网站,网上营销怎么做1656. 设计有序流 - 力扣(LeetCode) 题目 有 n 个 (id, value) 对,其中 id 是 1 到 n 之间的一个整数,value 是一个字符串。不存在 id 相同的两个 (id, value) 对。 设计一个流,以 任意 顺序获取 n 个 (id, value) …

1656. 设计有序流 - 力扣(LeetCode)

题目

有 n 个 (id, value) 对,其中 id 是 1 到 n 之间的一个整数,value 是一个字符串。不存在 id 相同的两个 (id, value) 对。

设计一个流,以 任意 顺序获取 n 个 (id, value) 对,并在多次调用时 按 id 递增的顺序 返回一些值。

实现 OrderedStream 类:

  • OrderedStream(int n) 构造一个能接收 n 个值的流,并将当前指针 ptr 设为 1 。
  • String[] insert(int id, String value) 向流中存储新的 (id, value) 对。存储后:
    • 如果流存储有 id = ptr 的 (id, value) 对,则找出从 id = ptr 开始的 最长 id 连续递增序列 ,并 按顺序 返回与这些 id 关联的值的列表。然后,将 ptr 更新为最后那个  id + 1 。
    • 否则,返回一个空列表。

题目比较抽象,但是看动画很容易明白。

解法一

建立一个索引数组,如果差值为1,说明连续,就可以进行弹出。并且index加1 这里的写法不好理解
假如我有一个长度5的stream。然后一次放5,4,3,2,这时候index队列为
4 4 3 2 1
当放1的时候形成 5 4 3 2 1 就可以全部弹出。就像是楼梯一样。

class OrderedStream {int index = 1;int[] indexlist;String[] valuelist;public OrderedStream(int n) {indexlist = new int[n + 1];valuelist = new String[n + 1];}public List<String> insert(int idKey, String value) {for (int i = index; i <= idKey; i++) {indexlist[i]++;}valuelist[idKey] = value;List<String> list = new ArrayList<>();while ((index == indexlist.length - 1 && valuelist[indexlist.length - 1] != null)|| (index < indexlist.length - 1 && indexlist[index] == indexlist[index + 1] + 1)) {// index如果为最后一个,并且有值一定要弹出。如果不是最后一个需要判断是否和下一个差1list.add(valuelist[index]);index++;}return list;}
}

image.png

解法二 上面的思路比较乱,进行了简化
 class OrderedStream {  int index = 1;  HashMap<Integer, String> map;  public OrderedStream(int n) {  map = new HashMap<>();  }  public List<String> insert(int idKey, String value) {  map.put(idKey, value);  List<String> res = new ArrayList<>();  // 如果有,就加入队列弹出。并且index加一。这里覆盖了各种极端情况,弹出一个,越界等  while (map.get(index) != null) {  String s = map.get(index);  res.add(s);  index++;  }  return res;  }  
}

image.png

解法三 将上面的map改为数组
class OrderedStream {  int index = 1;  String[] valuelist;  public OrderedStream(int n) {  valuelist = new String[n + 1];  }  public List<String> insert(int idKey, String value) {  valuelist[idKey] = value;  List<String> res = new ArrayList<>();  // 如果有,就加入队列弹出。并且index加一。这里覆盖了各种极端情况,弹出一个,越界等  while (index != valuelist.length && valuelist[index] != null) {  String s = valuelist[index];  res.add(s);  index++;  }  return res;  }  
}

image.png

image.png
这已经是最优解了,刷新一下就变成了前百分之96了

总结

解法一没有很简洁,但是是最先想到的。反而越是简单精妙的结构,越是不好短时间抽象出来

http://www.dtcms.com/wzjs/385002.html

相关文章:

  • 电话怎么做网站推广广州抖音推广
  • 网站开发过程中的功能需求分析今日武汉最新消息
  • 微信平台可以做微网站吗百度小说搜索热度排行榜
  • ps图做ppt模板下载网站有哪些网站在线推广
  • 如何把做的网站与域名连接不上成都高薪seo
  • 快速搭建网站工具十大品牌营销策划公司
  • 邵阳做网站的有哪些网络推广经验
  • 做中东服装有什么网站sem是什么基团
  • 武汉cms建站系统百度搜索网站排名
  • 网站图片下载 代码网站制作费用多少
  • 科技通信网站模板下载google chrome谷歌浏览器
  • dw做网站导航长春百度seo公司
  • 网站管理系统网页制作成品模板网站
  • 进一步加强门户网站建设的通知东莞优化疫情防控措施
  • 自助建站最好的平台深圳做网站
  • 全网网站建设维护河北网络推广技术
  • 竭诚网络网站建设开发查看网站流量的工具
  • 怎么把在EXCEL做的查询系统做到网站上b2b免费推广平台
  • wordpress中文后台seo推广软件下载
  • 济南网站app开发长沙官网seo收费
  • 做网站服务器e3经典seo伪原创
  • wordpress next排名sem优化软件
  • 毕业设计网站设计步骤网络营销推广方法十种
  • 合肥网站设计建四川seo快速排名
  • 域名是网站吗html模板网站
  • 模板厂家长春seo快速排名
  • 企业营销网站建设公司搜索词热度查询
  • c 做网站方便吗公司网站推广费用
  • 利用表单大师做网站网站制作公司
  • 网站经常出现502北京网络seo推广公司