一、知识重点(一)字符桶的本质:数组映射字符核心逻辑:用数组下标映射字符的 ASCII 值,数组元素存储字符出现的次数(或是否出现)。 (二)字符桶的 3 大典型应用场景1. 统计每个字符的出现次数(字符的统计)2. 找出现次数最多的字符(字符的计数)3. 找未出现的字符(字符的存在)(三)字符桶的关键知识点知识点说明数组与 ASCII 的映射利用字符的 ASCII 码作为数组下标,实现 “字符→次数” 的直接映射桶数组的初始化需覆盖目标字符的 ASCII ;输入时 char c 直接存 ASCII 值(四)字符桶的扩展与进阶支持更多字符:若涉及中文或特殊字符,需用 ** Unicode 编码 **(如 wchar_t 或字符串统计),但基础思想一致(用下标映射编码值 0; }3.
{ 0% { left: 0; } 50% { left: 200px; } 100% { left: 0; } } </style> # Vue 3 的动画 Vue 3 中提供了一些动画的封装,使用内置的 traisition 组件来控制组件的动画。
现代 Web 应用都是由三大件构成,分别是:组件、数据和路由。在一些数据组件之间需要共享的时候,应该如何实现?
# h 函数 在 Vue 3 的项目开发中,template 是 Vue 3 默认的写法。 render 函数返回 h 函数的执行结果,h 函数的第一个参数就是标签名,可以很方便地使用字符串拼接的方式, src/components/Heading.jsx: import { defineComponent src/pages/about.vue 中使用: <template>
登录成功后,需要把这个 token 存储在本地存储里面,留着后续发送数据。实现比较简单,直接把 token 存储到 localStorage 中就行。
认识VUE3 1. Vue3的优势 使用create-vue搭建Vue3项目 1. 跨层传递普通数据 实现步骤 顶层组件通过 provide 函数提供数据 底层组件通过 inject 函数提供数据 3. /src', import.meta.url)) } } }) Vue3 状态管理 - Pinia 1. npm init vite@latest 按照官方文档安装 pinia 到项目中 3.
Vue 3 通过拆包,使用最近流行的 monorepo 管理方式,响应式、编译和运行时全部独立了: 在 Vue 3 的组织架构中,响应式独立了出来。 在任何时候,如果希望数据被修改了之后能通知你,都可以单独依赖 Vue 3 的响应式。 # 新的组件 Vue 3 还内置了 Fragment、Teleport 和 Suspense 三个新组件。 # Vue 2 升级 Vue 3 Vue 3 由于新的响应式系统用了 Proxy,会存在兼容性问题。如果你的应用被要求兼容 IE11,就应该选择 Vue 2。 Vue 2.7 会移植 Vue 3 的一些新特性,让你在 Vue 2 的生态中,也能享受 Vue 3 的部分新特性。
/components/Rate.vue'; let score = ref(3); </script> # 组件事件 在 Vue 中,使用 emit 来对外传递事件,这样父元素就可以监听 Rate /components/Rate.vue'; let score = ref(3); function updateScore(num) { score.value = num; } </script
Vue 3 的 reactive 函数可以把一个对象变成响应式数据,而 reactive 就是基于 Proxy 实现的。 watchEffect(() => { console.log('data updated', obj.count, double.value); }); # value setter 在 Vue 3 中还有另一个响应式实现的逻辑,就是利用对象的 get 和 set 函数来进行监听,这种响应式的实现方式,只能拦截某一个属性的修改,这也是 Vue 3 中 ref 这个 API 的实现。 # Vueuse VueUse (opens new window) 趁着这一波 Vue 3 的更新,跟上了响应式 API 的潮流。 VueUse 的官方的介绍说这是一个 Composition API 的工具集合,适用于 Vue 2.x 或者 Vue 3.x,用起来和 React Hooks 很像。
在 jQuery 时代,对于大部分 Web 项目而言,前端都是不能控制路由的,而是需要依赖后端项目的路由系统。通常,前端项目也会部署在后端项目的模板里,对于每次的页面跳转,都由后端开发人员来负责重新渲染模板。
script setup> <script setup> 是为了提高使用 Composition API 的效率而存在的,使用 <script setup> 可以让代码变得更加精简,这也是现在开发 Vue 3
https://juejin.cn/post/6980267119933931551
往期回顾: 海量数据面试题总结(1)-Hash映射+Hash统计+归并排序 海量数据面试题总结(2)-BitMap 模式三:多层桶划分 一、解决思路: 多层桶划分,本质思想还是分而治之,可以认为是BitMap (2) 实际上,如果不是int16而是int64,2^64个Bit在内存中是存不下的,但可以经过3次划分降低到可以计算的程度。
# 代码效率优化 很多 Vue 2 中的性能优化策略,在 Vue 3 时代已经不需要了,需要做的就是遵循 Vue 官方的最佳实践,其余的交给 Vue 自身来优化就可以了。
Vue 是一个 Web 前端框架,是一个 用于构建用户界面的渐进式 JavaScript 框架。
每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。 总共有100个桶。然后对A[1..n]从头到尾扫描一遍,把每个A[i]放入对应的桶B[j]中。 然后再对这100个桶中每个桶里的数字排序,这时可用冒泡,选择,乃至快排,一般来说任何排序法都可以。 最后依次输出每个桶里面的数字,且每个桶中的数字从小到大输出,这样就得到所有数字排好序的一个序列了。 假设有n个数字,有m个桶,如果数字是平均分布的,则每个桶里面平均有n/m个数字。 因为输入数均匀分布在[0,1)上,所以一般不会有很多数落在一个桶中的情况。为得到结果,先对各个桶中的数进行排序,然后按次序把各桶中的元素列出来即可。 当然桶排序的空间复杂度为O(N+M),如果输入数据非常庞大,而桶的数量也非常多,则空间代价无疑是昂贵的。此外,桶排序是稳定的。
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。 每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序) 思想: 设待排序序列的元素取值范围为0到m,则我们新建一个大小为m+1的临时数组并把初始值都设为0,遍历待排序序列
# 桶排序 # 原理 求出无序集合的最大值与最小值(这里的最小值指存在负数的情况),创建对应的数组长度 length=max+1 这里要处理一下负数 if min<0: length+=abs(min) 该length就是桶数组的长度,并创建这个桶数组将所有值初始化为0 然后遍历无须数组,修改桶中元素的个数(桶数组所以对应的值就是无需数组中相同值的个数) 最后只需要将桶数组中值大于 minItem>item): minItem=item # 最小值,最大值 print("min:{0}\tmax:{1}".format(minItem,maxItem)) # 创建桶数组 minItem<0): length+=abs(minItem) bigArr=[0]*length for item in inputArr: bigArr[item]+=1 # 将桶中的数据放到对应的有序数组上
3. 桶排序 桶排序的思想是若待排序的记录的关键字在一个明显有限范围内(整型)时,可设计有限个有序桶,每个桶装入一个值(当然也可以装入若干个值),顺序输出各桶的值,将得到有序的序列。 1 #include<iostream> 2 using namespace std; 3 int a[100001]; 4 int b[100001]; 5 int maxn=-1; 6 int
桶排序的思想 (1) 得到无序数组的取值范围 ? (2) 根据取值范围"创建"对应数量的"桶" ? (3) 遍历数组,把每个元素放到对应的"桶"中 ? (4) 按照顺序遍历桶中的每个元素,依次放到数组中,即可完成数组的排序。 "桶"是一种容器,这个容器可以用多种数据结构实现,包括数组、队列或者栈。 2. 复杂度 时间复杂度:遍历数组求最大值最小值为O(n),遍历数组放入"桶"中复杂度为O(n),遍历桶取出每个值的复杂度为O(n),最终的时间复杂度为O(3n),也就是O(n) 空间复杂度:额外的空间取决于元素的取值范围 ,总的来说为O(n) 稳定性:桶排序是否稳定取决于"桶"用什么数据结构实现,如果是队列,那么可以保证相同的元素"取出去"后的相对位置与"放进来"之前是相同的,即排序是稳定的,而如果用栈来实现"桶",则排序一定是不稳定的 ,因为桶排序可以做到稳定,所以桶排序是稳定的排序算法 3.