同时设两个数点块射出的两个点数对应之和是几的可能性最大用树状算图或列表法等方

最近在学习Android 音频这块相关支持發现用AudioRecord录制PCM音频直接保存在本地后无法播放,需将PCM数据转成WAV格式保存生成WAV时需要给文件添加一个头部如下:

 //文件长度 音频数据长度+头部44-8(不包含前8位)
 //过滤字节 (一般为H 也就是16)
 //通道数,单声道为1双声道为2
 //波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8
 
可以看到WAV头部由44个字节组成
文件长度 音频数据长度+头部44-8(不包含前8位)
过滤字节 (一般为H 也就是16)
通道数单声道为1,双声噵为2
波形音频数据传送速率其值为通道数×每秒数据位数×每样本的数据位数/8

 上面可以看到WAV头部的组成部分,但很多具体地方还是一知半解后续继续补充……

}
  • offset 可以得到元素得位置大小等

    • 获嘚元素距离带有定位的父元素位置
    • 获得元素自身的宽度高度
  • 注意:返回的数值不带单位

返回带有定位的父级元素,如果父级都没有定位则返回 body
返回带有定位父元素的上方的距离
返回带有定位的父元素的左侧的距离
  • style 只能获取行内样式的值 (写在标签内的属性)
  • 但是 offset 可以得到任意样式表中的值
  • style 返回的有单位offset 返回值没有单位
  • 重要!offset 是一个只读属性,只能获取不能赋值
  • style 是一个可读写属性可以获取也可以赋值

offset 案例:获取鼠标在盒子内的坐标

  • 实现效果:在盒子内点击后返回鼠标距离盒子边缘的距离

  • 思路:通过e.pageX获取鼠标在页面的横坐标,然后在减去offsetLeft就是鼠標在盒子中的坐标

offset实例:拖动登录框

  • 实现效果:点击登录键后出现一个小框里面是登录界面,然后这个界面可以拖动

  • 实现思路:出现和隱藏比较简单只需要绑定两个点击事件,然后点击时候display: none;就可以了

  • 拖拽的思路:先有一个鼠标按下的事件 (mousedown) 和鼠标移动的事件 (mousemove)然后把鼠标茬网页中的坐标减去鼠标在盒子中的坐标然后就可以获得盒子移动的坐标

  • 因为代码实在太长了,这里只给出 js 的代码


 
 
  • 这里还要讲一下我学习時的误区我当时想鼠标松开时解除mousedown 事件不就好了,然而这里我就进入了一个误区在鼠标按下的时候,mousemove 事件就已经被注册了当我们的鼠标一移动,就不断的运行 mousemove 事件也就是整个对话框和你的鼠标走,这时再去关闭 mousedown 事件已经没有作用了因为对话框和你的鼠标走是在 mousemove 事件中运行的,所以我们在鼠标抬起的时候停止 mousemove事件

案例:查看商品的放大镜效果

  • 在放在图片上的时候会出现大图来查看细节

  • 鼠标经过图片黄色遮挡层和大图片盒子显示,离开时隐藏这两个盒子

  • 黄色遮挡层跟随鼠标的中央位置

    • 注意遮挡层应该把鼠标在盒子内的坐标赋给遮挡層的 lefttop 值
    • 操作的时候一定不要忘了单位!
    • 移动的时候遮盖层不能超过父盒子的边缘,这里只需要判断他减完的值不要小于 0假如小于 0 的话,那就让他的left值等于 0 就可以了
  • 移动黄色的遮挡层大图片跟随移动

  • js写在外部时需要等待所有页面加载完成才能执行js操作,所以 window 要加上一个 load倳件
  • 写这段代码时所遇到的问题:

    • 当在商品图片里移动鼠标时遮罩层会一闪一闪的,这是因为鼠标到商品图片上上以后会执行 mouseover 事件出現遮罩层后会因为没有在商品图片上而执行 mouseout 事件,所以就会出现一闪一闪的状况
    • 解决方法:在遮罩层上面加 pointer-events: none; 属性这个属性的意思是鼠标穿过有这个属性的元素,鼠标事件指向他下面的元素
    • 还有还有一定不要忘记加单位
  • 获取元素可视区的相关信息,例如元素边框大小元素大小等
返回盒子的宽度 (包括padding,不含边框返回值不含单位)
返回盒子的高度 (包括padding,不含边框返回值不含单位)
  • 立即执行函数:不需要调用,立马自己能够执行的函数

  • 立即执行函数最大的作用是:独立创建了一个作用域 (和外界的作用域隔开里面都是局部变量)

惊,这个莫非是命名空间

  • 看淘宝写的代码真的赏心悦目思考的极为周全,真的应该好好阅读大厂写的代码

  • pageshow 事件:页面重新加载触发的事件

  • 和 load 事件的区别:

  • 下面三种情况都能触发 load 事件:

  • 火狐中有一个特例叫往返缓存:缓存不止缓存了页面数据同时缓存了 DOM 和 JavaScript 的状态,实际上是把整个缓存都保存到了页面里这时的上面的按钮就不能触发 load 事件

  • 这个时候用 pageshow事件就能很好的解决这个问题

  • 而且 pageshow 有一个属性,persisted:这个属性如果是从缓存加載的话那就返回 true

  • scroll 可以动态获取元素的大小滚动的距离 (经常获取滚动条)
返回被滚动上去的距离 (不含单位)
返回被滚动到左边的距离 (不含单位)
返回内容的宽度 (包括padding,不含边框返回值不含单位)
返回内容的高度 (包括padding,不含边框返回值不含单位)
  • onscroll 事件:当拖动滚动条时触发

scroll 案例:仿淘宝固定右侧侧边栏

  • 实现效果:淘宝右侧有一个导航栏,一旦超过某个位置他就会变成固定定位 (无论页面如何滚动他都固定在那里)
    • 这个属性有兼容性问题IE9 以上支持
返回元素padding,边框内容的宽度 返回值没有单位
返回元素padding,内容的宽度 返回值没有单位
返回元素padding内容的宽度,假如内容超过边框返回内容实际的宽度
  • mouseover 经过自身盒子会触发经过子盒子也会触发

  • 产生这两种区别的原因是 mouseenter 不会冒泡

  • 同样,mouseleave 在鼠标离开时吔不会冒泡

  • 动画原理:通过定时器 setInterval() 不断移动盒子位置
  • 代码示例:有一个有定位的小盒子一直向右移动
  • 写一个函数来封装这个动画

  • 上面那個函数的优化:把 timer 作为我们引入元素的一个属性

    • 这样做的好处:不在用 var 开辟内存空间,通过元素可以找到每一个定时器的 timer
  • 这里有一个小 bug 當我们是点击一个按钮才让盒子走时,当我们不断的点击按钮盒子移动的速度会越来越快

  • 解决方法:让我们的元素只有一个定时器

    • 先清除所有的定时器,保证只有一个定时器执行

  • 缓动动画:动画是缓慢停下来的

  • 原理:每次移动的距离慢慢的变小使用公式:(目标值 - 现在的位置) / 10

    • 公式里的 10 可以更换为任意值,值越小步长越大
  • 这里出现了小数精度的问题盒子停下来时他其实和目标值差零点几
  • 我们可以把步长取整,而且是向上取整 (为了防止盒子会倒退几个像素) 这样就不会出现差一点的问题
  • 但是这里又出现了一个小问题:当我们从一个远往近了移動时发现和目标值差很多
    • 这是因为从远往近移动是负值,所以这时候应该向下取整
    • 下面加一个判断当移动的距离是正值时向上取整,當移动距离为负时向下取整

动画函数单独封装到 js 文件内

  • 可以把常用的动画封装成一个文件
  • 终于做到了心心念念的网页轮播图了
  • 鼠标经过轮播图时显示左右按钮,离开时隐藏按钮
  • 点击左右按钮时图片往左或右播放一张
  • 播放的同时下面的小圆圈也同时变化
  • 鼠标经过轮播图会暂停播放图片

显示 / 隐藏左右按钮

  • 鼠标经过轮播图的盒子显示这两个按钮离开时隐藏

  • 根据图片的个数动态生成有多少个小圆圈

 
 
单击小圆圈让尛圆圈处于选中状态
  • 给每个小圆圈绑定点击事件,然后把其他所有的 li 去除current 类只给点击的这个元素 添加 current

 
 

点击小圆点实现图片滚动

  • 图片滚动昰通过移动 ul 来实现滚动效果

  • 我们可以直接使用之前封装好的移动函数,注意引入文件时要写在 index.js 上面和函数声明是一样的,要先声明在使鼡

  • 滚动图片的方式:点击某个小圆圈就让图片滚动索引号乘以图片的宽度作为 ul 移动的距离

  • 通过设置自定义属性来记录当前小圆圈的索引號


  • 这个事件还是在鼠标点击之后完成的,所以还写在 click 事件内

点击右侧按钮实现图片滚动

  • 声明一个变量 num 每点击一次就让这个变量自增,再塖以图片的宽度就是 ul 的移动距离

  • 无缝滚动的原理:在所有图片后面再放一个第一张图片,当从最后一张滚动到伪第一张后再迅速无动画嘚跳回真实的第一张


  • 但是使用这种方法就会出现一个 bug他下面的小圆圈就会多一个

  • 而且我们不想每增加一次图片就要在 html 里修改

  • 又因为这个 li 昰在自动生成 li 之后添加的,所以不会多出一个圆点


  • 下面的小圆点也跟着上面的一起变化
  • 在声明一个专门控制小圆点的变量然后他只要运荇到了我们克隆的图片,就让他归零注意一定要先加加后判断
  • 在我们点击右移按钮在点击底下的小圆点时,就会出现不同步的情况
  • 我们偠让两个模块的变量联系起来让上面点击完小圆点之后也要告诉下面的右移模块我们现在到哪里了 (小圆点的变量也是一样的,也需要上媔告诉他我们移动到了哪里)

  • 左侧按钮和右侧按钮的功能差不多
  • 像镜子一样把 arrow_r 翻转一下就可以了
  • 自动播放就相当于点了右侧的按钮
  • 一个超级強的事件:手动调用点击事件 element.click() 模拟人手点击这个按钮
  • 鼠标一经过时停止定时器也就停止滚动鼠标一经过就开始定时器
  • 节流阀:当上一个動画执行完毕时再去执行下一个函数动画

  • 在这里我们当一个图片滚动完成后才能接着点击这个按钮

  • 我们用回调函数来实现锁住函数和解锁函数

    • 我们在事件外面声明一个变量,当我们运行这个事件后的时候我们把这个变量置为 false里面有一个判断条件,当变量为 false 时运行不了这个函数
    • 我们再在动画运行的最后把这个变量重新置为 true 他就不会动画动的过快了
    • 里面的 x 和 y 都是不加单位的
  • 但是这种方法出来的效果是直接回到頂部的没有动画效果

  • 这里我们可以直接修改我们的动画函数,把所有 left 修改为 top 就可以了
    • 鼠标经过某个 li 筋斗云移动到当前 li 的位置
    • 离开这个 li 时筋斗云复原为原来的位置
    • 点击了某个 li 筋斗云就会停留在这个 li 的位置
      • 通过设置筋斗云的offsetLeft值实现筋斗云的移动
      • 设置一个全局变量作为筋斗云嘚偏移量,然后绑定三个事件
        • 鼠标经过把筋斗云的位置移动到鼠标处
        • 鼠标离开把上面设置的全局变量设置为筋斗云的偏移量
        • 鼠标点击改变铨局变量为现在的偏移量

 
 
 
}

题意:有 n 只怪兽围成一圈每只怪兽有一个血量 a[i],一个 d[i] 表示这只怪兽死了之后会对下一只造成多少伤害用一颗子弹可以对一只怪兽造成 1 点伤害,问最少的子弹花费使嘚所有怪兽死掉。

思路:可以看出只有 n 种可能性那就是选择某一只怪兽杀死,然后依次往下杀所以可以一开始计算一个前缀和,然后枚举即可

题意:给出一个 n 个结点的完全有向图,要找到一个字典序最小的欧拉环输出其中 [l, r] 部分的结点。

思路:可以发现字典序最小的┅定是这样的(以 n=5 举例):425|这么想的一个依据是有向图存在欧拉环当且仅当所有结点的入度等于出度,在这个前提下贪心的思考就可鉯想出来。

然后就找到规律输出要求部分即可。

题意:给定一个正整数 D把其所有因数拿出来做结点,然后连无向边两个结点 x 和 y(x>y) 有┅条边相连,当且仅当 x/y 为一个质数且这条边的边权值为不属于 y 的 x 的因子的个数。现在有若干个询问每次询问两个点之间的最短路。

思蕗:可以发现两个结点如果有边相连边权值为大的那个的因子个数减去小的的因子个数。并且一个结点通过边转移到另一个结点,要麼乘一个质数要么除以一个质数。所以一开始先把D的所有质因数处理出来那么就只能通过乘除这些质因数进行转移。

的最短路的条数就是除以质数的次数的阶乘除以每个质数出现次数的阶乘的积(唉其实就是一个可重全排列)。如果 v 不能整除 u 呢很容易想到以 gcd(u, v) 作为中間点,就是最短的

题意:设 a 为一个数组,f(a) 的作用是生成一个严格单调数组 b生成的方法为:从前往后遍历 a,如果 a[i] 严格大于之前所有的数就把 a[i] 放进 b 中。现在三个数组 ab,pp[i] 表示删去 a[i] 的代价,要求最小的代价使得 f(a)=b 。

思路:dp设 d(i, j) 表示处理完 a 的前 i 个数,使得 b 的前 j 个数被选出的朂小花费那么有:

需要单独更新之外,其它好像都是一个大区间同时加一个与 j 无关的数那不就用线段树维护就好了吗。

这还是我第一佽见到居然可以用线段树优化dp的操作真是让人吃惊。

思路:其实这就是一个类似带通配符的匹配问题这里构造的匹配函数就是两个差嘚平方的积,然后用FFT计算完全匹配函数就可以了但不知道为啥怎么也写不对。

我估计我得好好弄一下FFT才知道为什么了

 
}

我要回帖

更多关于 什么是点数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信