最大连续 1 的个数
最大连续 1 的个数
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
输入:nums = [1,1,0,1,1,1]
输出:3
解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.
12345678var findMaxConsecutiveOnes = function(nums) { for (var i=1; i<nums.length; i++) { if (nums[i-1]!=0 && nums[i]!=0) { nums[i] += nums[i-1]; } } return Math.max(...nums);};
多数元素
多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
输入:nums = [3,2,3]
输出:3
进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
1234var majorityElement = function(nums) { nums.sort((a,b)=>a-b) return nums[Math.floor(nums.length/2)]};
Vuex-Action
ActionAction 类似于 mutation,不同在于:
Action 提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作。
让我们来注册一个简单的 action:
123456789101112131415const store = new Vuex.Store({ state: { count: 0, }, mutations: { increment(state) { state.count++; }, }, actions: { increment(context) { context.commit("increment"); }, },});
Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象,因此你可以调用 context.commit 提交一个 mutation,或者通过 context.s ...
Vuex-Mutation
Mutation更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类似于事件:每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 **回调函数 (handler)**。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数:
1234567891011const store = new Vuex.Store({ state: { count: 1, }, mutations: { increment(state) { // 变更状态 state.count++; }, },});
你不能直接调用一个 mutation handler。这个选项更像是事件注册:“当触发一个类型为 increment 的 mutation 时,调用此函数。”要唤醒一个 mutation handler,你需要以相应的 type 调用 store.commit 方法: ...
Vuex-Getter
Getter有时候我们需要从 store 中的 state 中派生出一些状态,例如对列表进行过滤并计数:
12345computed: { doneTodosCount () { return this.$store.state.todos.filter(todo => todo.done).length }}
如果有多个组件需要用到此属性,我们要么复制这个函数,或者抽取到一个共享函数然后在多处导入它——无论哪种方式都不是很理想。
Vuex 允许我们在 store 中定义“getter”(可以认为是 store 的计算属性)。就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。
Getter 接受 state 作为其第一个参数:
12345678910111213const store = new Vuex.Store({ state: { todos: [ { id: 1, text: "...", d ...
Vuex-State
StateVuex 使用单一状态树,每个应用将仅仅包含一个 store 实例
mapState 辅助函数当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性,让你少按几次键:
123456789101112131415161718// 在单独构建的版本中辅助函数为 Vuex.mapStateimport { mapState } from "vuex";export default { // ... computed: mapState({ // 箭头函数可使代码更简练 count: (state) => state.count, // 传字符串参数 'count' 等同于 `state => state.count` countAlias: "count", // 为了能够使用 `this` 获取局部状态,必须使用常规函数 coun ...
Vuex-核心概念-State
VuexVuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
Vuex 使用过程演示以vue-cli3新创建出来的项目为例,演示 Vuex 的使用过程。
创建项目:
123vue create vuex-testcd vuex-testnpm run serve
安装vuex:
1npm i vuex -S
进入项目的src/下新建一个文件store/index.js,并写入:
1234567891011121314151617181920// store/index.jsimport Vue from "vue";import Vuex from "vuex";Vue.use(Vuex);const store = new Vuex.Store({ // 容器 (构造函数Store开头大写) state: { // 状态 count: 0, }, mutations: { // 变化(使用mutations提交改变是为了方便追踪变化记录) increment ...
Vuex-使用过程演示
Vuex使用过程演示以vue-cli3新创建出来的项目为例,演示Vuex的使用过程。
创建项目:
123vue create vuex-testcd vuex-testnpm run serve
安装vuex:
1npm i vuex -S
进入项目的src/下新建一个文件store/index.js,并写入:
1234567891011121314151617// store/index.jsimport Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({ // 容器 (构造函数Store开头大写) state: { // 状态 count: 0 }, mutations: { // 变化(使用mutations提交改变是为了方便追踪变化记录) increment (state){ state.count++ ...
Vuex-使用过程
VuexVuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
Vuex 使用过程演示以vue-cli3新创建出来的项目为例,演示 Vuex 的使用过程。
创建项目:
123vue create vuex-testcd vuex-testnpm run serve
安装vuex:
1npm i vuex -S
进入项目的src/下新建一个文件store/index.js,并写入:
1234567891011121314151617181920// store/index.jsimport Vue from "vue";import Vuex from "vuex";Vue.use(Vuex);const store = new Vuex.Store({ // 容器 (构造函数Store开头大写) state: { // 状态 count: 0, }, mutations: { // 变化(使用mutations提交改变是为了方便追踪变化记录) increment ...
数字的补数
数字的补数
对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数 5 的二进制表示是 “101” ,取反后得到 “010” ,再转回十进制表示得到补数 2 。给一个整数 num ,输出它的补数。
输入:num = 5
输出:2
解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
1234567var findComplement = function(num) { let n = 0 while(1 << n <= num && n < 31) { n++ } return ((1 << n) - 1) ^ num};