判定一组矩形是否共同构成一个完整的矩形

作者:金牛区福生殡葬服务部 来源:www.cdfsbz.com 发布时间:2017-09-06 09:14:15
判定一组矩形是否共同构成一个完整的矩形 function rect(l, t, w, h) this.l = l; // left this.t = t; // top this.w = w; // width this.h = h; // height function check(rects) { var data = []; var i, t, b; for(i = 0; i < rects.length; i++ ) { t = rects[i].t; b = t + rects[i] + h; while (t < b) { if (!data[t]) { data[t] = l: rects[i].l, w: rects[i].w } else data[t].l = Math.min(data[t].l, rects[i].l); data[t].w += rects[i].w; t++; } } for (i = 1; i < data.length; i++) if (!data[i] return true; }

这种方法时间复杂度是O(h1 + h2 + … + hn),可以通俗理解为O(n*avg(h)),如果对于矩形很多,但是每个高度都比较小的情况会近似于O(n),但是如果矩形较少,高度很高的话,反而效率比O(n^2)还差。

下面还有一种办法

function check(rects) { var i, l = 10000, r = 0, t = 10000, b = 0, sum = 0; for (i = 0; i < rects.length; i++) sum += rects[i].w * rects[i].h; l = Math.min(l, rects[i].l); r = Math.max(r, rects[i].l + rects[i].w); t = Math.min(t, rects[i].t); b = Math.max(b, rects[i].t + rects[i].h); return ((r - l) * (b - t) != sum); }

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:荆州网站制作 http://jingzhou.666rj.com

  • 上一篇:PHP 文件上传表单 ~~学习笔记
  • 下一篇:最后一页
  • 
    COPYRIGHT © 2015 金牛区福生殡葬服务部 ALL RIGHTS RESERVED.
    购买cdfsbz.com友情链接、项目合作请联系客服QQ:2500-38-100 邮箱:2500-38-100#QQ.com(#换@)
    本站所有原创信息,未经许可请勿任意转载或复制使用 网站地图 技术支持:肥猫科技
    精彩专题:网站建设
    购买本站友情链接、项目合作请联系客服QQ:2500-38-100