Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >每日两题 T35

每日两题 T35

作者头像
合一大师
发布于 2020-07-20 01:52:19
发布于 2020-07-20 01:52:19
88500
代码可运行
举报
文章被收录于专栏:JavaScript全栈JavaScript全栈
运行总次数:0
代码可运行

算法

LeetCode T33. 搜索旋转排序数组[1]

描述

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1

你可以假设数组中不存在重复的元素。

你的算法时间复杂度必须是 O(log n) 级别。

示例1 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4

示例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1

分析

使用二分法即可完成,当然JavaScript中的数组方法 index 已实现该功能,见代码二。

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {
  let l = 0
  let r = nums.length - 1
  while(l <= r){
    let mid = l + ((r - l) >> 1)         // 取中间索引
    if(nums[mid] === target) return mid  // 找到了 直接返回

    if(nums[l] <= nums[mid]){            // 如果第一个元素 小于等于 中间元素 表示 左边的是增序的 如[4,5,6,7,0,1,2]

      // 如果target 小于 中间元素, 大于第一个元素 ,说明target处于 [l, mid]间
      if(nums[mid] > target && nums[l] <= target){  
        r = mid - 1
      } else {  // 否则处于 [mid + 1, r]中
        l = mid + 1
      }

    } else {                            // 否则 右边是增序的 如[6,7,0,1,2,4,5]

      // 如果target 大于中间元素 小于最后元素, 说明处于[mid + 1, r]中
      if(nums[mid] < target && nums[r] >= target){   
        l = mid + 1
      } else {  // 否则处于[l, mid - 1]中
        r = mid - 1
      }

    }
  }
  // 没找到
  return -1
};

代码二

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var search = function (nums, target) {
  return nums.indexOf(target);
};

前端

为什么要用redux-saga?看过dva源码吗?

redux

redux是 JavaScript 状态容器,提供可预测化的状态管理。

应用中所有的 state 都以一个对象树的形式储存在一个单一的 store 中。惟一改变 state 的办法是触发 action,一个描述发生什么的对象。为了描述 action 如何改变 state 树,你需要编写 reducers。

你应该把要做的修改变成一个普通对象,这个对象被叫做 action,而不是直接修改 state。然后编写专门的函数来决定每个 action 如何改变应用的 state,这个函数被叫做 reducer。

redux 有且仅有一个 store 和一个根级的 reduce 函数(reducer)。随着应用不断变大,你应该把根级的 reducer 拆成多个小的 reducers,分别独立地操作 state 树的不同部分,而不是添加新的 stores。这就像一个 React 应用只有一个根级的组件,这个根组件又由很多小组件构成。

redux-saga

redux-saga 是一个用于管理应用程序 Side Effect(副作用,例如异步获取数据,访问浏览器缓存等)的 library,它的目标让副作用管理更容易,执行更高效,测试更简单,在处理故障时更容易

可以想像为,一个 saga 就像是应用程序中一个单独的线程,它独自负责处理副作用。redux-saga 是一个 redux 中间件,意味着这个线程可以通过正常的 redux action 从主应用程序启动,暂停和取消,它能访问完整的 redux state,也可以 dispatch redux action。

redux-saga 使用了 ES6 的 Generator 功能,让异步的流程更易于读取,写入和测试。(如果你还不熟悉的话,这里有一些介绍性的链接) 通过这样的方式,这些异步的流程看起来就像是标准同步的 Javascript 代码。(有点像 async/await,但 Generator 还有一些更棒而且我们也需要的功能)。

你可能已经用了 redux-thunk 来处理数据的读取。不同于 redux thunk,你不会再遇到回调地狱了,你可以很容易地测试异步流程并保持你的 action 是干净的。

redux-saga与其他redux中间件比较

•redux-thunk 的缺点在于api层与store耦合,优点是可以获取到各个异步操作时期状态的值,比较灵活,易于控制

•redux-promise的优点是api层与store解耦,缺点是对请求失败,请求中的情形没有很好的处理

•redux-saga 的优点是api层与store解耦,对请求中,请求失败都有完善的处理,缺点是代码量较大

References

[1] 33. 搜索旋转排序数组: https://leetcode-cn.com/problems/search-in-rotated-sorted-array/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript全栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
互联网明厨亮灶智慧监管系统
互联网明厨亮灶智慧监管系统基于pytho+yolov7网络模型AI视觉图像分析技术,互联网明厨亮灶智慧监管系统可以识别人员行为及穿戴是否合规,不穿厨师服、不按要求穿戴厨师帽或者佩戴口罩和手套、行为如违规在后厨抽烟、出现老鼠等情景。近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。而另一类是Yolo,SSD这类one-stage算法,其仅仅使用一个CNN网络直接预测不同目标的类别与位置。
燧机科技
2023/05/04
4090
互联网明厨亮灶智慧监管系统
攀高识别预警系统
攀高识别预警系统通过yolov7网络模型技术,攀高识别预警系统对人员违规抽烟、打架斗殴、异常倒地、翻越围墙、异常聚集、打电话、区域侵入等行为分析等立即抓拍及时触发告警。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/04/28
2740
攀高识别预警系统
河道垃圾识别系统
河道垃圾识别系统通过yolov7网络模型智能视频分析技术,河道垃圾识别系统对河道水面垃圾进行7*24小时自动不间断实时监测,河道垃圾识别系统监测到河道水面出现垃圾时,立即抓拍告警。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/03/08
6910
河道垃圾识别系统
工装识别工装检测系统
工装识别工装检测系统通过yolov7+python网络模型算法智能分析技术,工装识别工装检测系统对现场人员是否穿戴的进行实时分析,发现现场画面人员未按要求着装,系统会自动抓拍发出警报并讲违规图片视频保存下来,同步回传后台提醒监理人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/04/23
3620
工装识别工装检测系统
人员跌倒识别检测系统
人员跌倒识别检测系统通过Python+YOLO7网络模型算法,人员跌倒识别检测系统对现场画面中有人员倒地摔倒行为实时分析预警,人员跌倒识别检测算法模型发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/04/11
5930
加油站卸油行为监控视频识别系统
加油站卸油行为监控视频识别系统依据监控摄像机采集加油站现场视频,依据机器视觉视频分析技术,分析和识别视频图象。加油站卸油行为监控视频识别系统智能识别职工没戴工帽、不穿工作服、烟火(抽烟)、不按规定操作等违规行为。系统会及时报警语音提醒,将报警信息回传给后台,并同步到相关人员得手机上,进行加油站监督的闭环管理。
燧机科技
2022/09/27
3010
加油站卸油行为监控视频识别系统
人员摔倒识别预警系统 人员跌倒检测系统
人员摔倒识别预警系统 人员跌倒检测系统基于yolov7网络模型计算机识别技术,人员摔倒识别预警系统 人员跌倒检测系统对画面中人员摔倒进行实时检测识别抓拍告警。YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和通道乘数。然后,每个计算块计算出的特征图会根据设置的组参数 g 被打乱成 g 个组,再将它们连接在一起。此时,每组特征图的通道数将与原始架构中的通道数相同。最后,该方法添加 g 组特征图来执行 merge cardinality。除了保持原有的 ELAN 设计架构,E-ELAN 还可以引导不同组的计算块学习更多样化的特征。
燧机科技
2023/03/06
9390
人员摔倒识别预警系统 人员跌倒检测系统
加油站视频监控智能分析盒
加油站视频监控智能分析盒基于yolov5人工智能视觉技术,加油站视频监控智能分析盒对现场画面中明火和烟雾以及人员抽烟、打电话等违规行为进行识别。除此之外,加油站视频监控智能分析盒还可以对现场画面中卸油时灭火器未按要求正确摆放以及静电释放时间不足和人员离岗等不规范行为进行自动预警。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。
燧机科技
2023/01/17
4990
ai皮带跑偏撕裂监测系统功能
ai皮带跑偏撕裂监测系统功能基于yolov7网络模型人工智能视觉技术,ai皮带跑偏撕裂监测系统功能自动识别现场画面中传送皮带撕裂、跑偏、偏移等情况,ai皮带跑偏撕裂监测系统功能立即告警抓拍存档同步回传后台。YOLO 的核心思想就是把目标检测转变成一个回归问题,利用整张图作为网络的输入,仅仅经过一个神经网络,得到bounding box(边界框) 的位置及其所属的类别。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/05/08
4150
ai皮带跑偏撕裂监测系统功能
加油站ai系统视频监测系统
加油站ai系统视频监测系统通过yolov5网络模型深度学习边缘计算技术,加油站ai系统视频监测系统对现场卸油过程中人员违规离岗、现场灭火器没有按要求正确摆放、加油站ai系统视频监测系统以及卸油前需要遵守静电释放15分钟、打电话、明火烟雾情况、抽烟行为进行自动识别。YOLO系列算法是一类典型的one-stage目标检测算法,其利用anchor box将分类与目标定位的回归问题结合起来,从而做到了高效、灵活和泛化性能好,Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别。
燧机科技
2023/02/25
3720
加油站ai系统视频监测系统
工地扬尘自动监测识别算法
工地扬尘自动监测识别算法通过yolov7+python网络模型深度学习算法模型,扬尘自动监测识别算法能够全天候、全方位地观测扬尘情况。扬尘检测模型继承YOLOv7 的策略是使用组卷积来扩展计算块的通道和基数。研究者将对计算层的所有计算块应用相同的组参数和通道乘数。然后,每个计算块计算出的特征图会根据设置的组参数 g 被打乱成 g 个组,再将它们连接在一起。此时,每组特征图的通道数将与原始架构中的通道数相同。最后,该方法添加 g 组特征图来执行 merge cardinality。除了保持原有的 ELAN 设计架构,E-ELAN 还可以引导不同组的计算块学习更多样化的特征。
燧机科技
2023/09/13
4560
工地扬尘自动监测识别算法
工地烟火AI监控识别分析系统
工地烟火AI监控识别分析系统通过yolov7网络模型技术,工地烟火AI监控识别分析系统对工地或者厂区现场监控区域内的烟火进行实时分析报警。工地烟火AI监控识别分析系统YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/05/05
2390
工地烟火AI监控识别分析系统
拥挤聚集智能监测算法
拥挤聚集智能监测算法可以通过yolov7网络模型深度学习框架对人员数量、密度等进行实时监测,拥挤聚集智能监算法识别出拥挤聚集的情况,并及时发出预警。YOLOv7 的发展方向与当前主流的实时目标检测器不同,它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。
燧机科技
2023/05/26
2910
拥挤聚集智能监测算法
穿戴规范智能识别系统
穿戴规范智能识别系统通过yolov7+python网络模型AI深度视觉学习算法,穿戴规范智能识别系统对工厂画面中人员穿戴行为自动识别分析,发现现场人员未按照规定穿戴着装,立即抓拍告警。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/04/09
8530
穿戴规范智能识别系统
AI动作异常行为分析监测系统
AI动作异常行为分析监测系统通过python+yolov7网络模型深度学习技术,AI动作异常行为分析监测系统对现场人员人体动作操作行为以及穿戴情况是否合规进行实时监测。YOLOv7 在 5 FPS 到 160 FPS 范围内,速度和精度都超过了所有已知的目标检测器。并在V100 上,30 FPS 的情况下达到实时目标检测器的最高精度 56.8% AP。YOLOv7 是在 MS COCO 数据集上从头开始训练的,不使用任何其他数据集或预训练权重。此外, YOLOv7 的在速度和精度上的表现也优于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR 等多种目标检测器。
燧机科技
2023/02/08
7970
AI动作异常行为分析监测系统
水面漂浮物垃圾识别检测系统
水面漂浮物垃圾识别检测系统通过yolov7网络模型AI视觉分析技术,水面漂浮物垃圾识别检测系统对河道湖面漂浮物、生活垃圾、水藻等多种漂浮物进行自动智能分析,水面漂浮物垃圾识别检测系统及时的预警提醒。OLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/03/23
1.3K0
水面漂浮物垃圾识别检测系统
校园食堂明厨亮灶AI智能分析盒
校园食堂明厨亮灶AI智能分析盒通过python+yolov7网络模型计算机视觉深度学习技术,校园食堂明厨亮灶AI智能分析盒可以自动识别后厨人员未按要求穿戴厨师服厨师帽以及戴口罩、违规在后厨吸烟以及偷偷玩手机等违规行为。Python是一门解释性脚本语言解释性语言:解释型语言,是在运行的时候将程序翻译成机器语言;解释型语言的程序不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码,所以解释型语言每执行一次就要翻译一次,与之对应的还有编译性语言。Python是一门跨平台、脚本以及开发应用的编程语言跨平台:跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。一个操作系统(如Windows)下开发的应用,放到另一个操作系统(如Linux)下依然可以运行。
燧机科技
2023/02/10
3320
校园食堂明厨亮灶AI智能分析盒
YOLOv7上线:无需预训练,5-160 FPS内超越所有目标检测器
机器之心报道 编辑:小舟、泽南 在 5-160 FPS 范围内速度和精度超过所有已知目标检测器。 在 YOLOv6 推出后不到两个星期,提出 YOLOv4 的团队就发布了更新一代的版本。 本周三,YOLOv7 的论文被提交到了预印版论文平台 arXiv 上,其三位作者 Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao 是 YOLOv4 的原班人马。 论文链接:https://arxiv.org/abs/2207.02696 GitHub 链接:
机器之心
2022/07/12
10.3K0
YOLOv7上线:无需预训练,5-160 FPS内超越所有目标检测器
人员操作行为识别监测
人员操作行为识别监测算法实时监测人员的操作行为,人员操作行为识别监测算法通过yolov7深度学习算法网络模型,对前端采集人员操作行为的图像使用算法进行分析,识别出不符合规范的操作行为,并发出告警信号以提醒相关人员。在人员操作行为识别监测算法训练之前,先在ImageNet上进行了预训练,其预训练的分类模型采用图8中前20个卷积层,然后添加一个average-pool层和全连接层。人员操作行为识别监测算法预训练之后,在预训练得到的20层卷积层之上加上随机初始化的4个卷积层和2个全连接层。由于检测任务一般需要更高清的图片,所以将网络的输入从224x224增加到了448x448。
燧机科技
2023/09/15
2970
人员操作行为识别监测
上海智慧校园视频智能分析系统
上海智慧校园视频智能分析系统通过yolov7+python网络模型分析技术,上海智慧校园视频智能分析系统对校园内学生打架、翻墙、倒地、异常聚集、攀高等行为实时监测预警。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之外,该研究提出的方法还专注于训练过程的优化,将重点放在了一些优化模块和优化方法上。这可能会增加训练成本以提高目标检测的准确性,但不会增加推理成本。研究者将提出的模块和优化方法称为可训练的「bag-of-freebies」。
燧机科技
2023/04/06
6620
上海智慧校园视频智能分析系统
相关推荐
互联网明厨亮灶智慧监管系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验