力扣 (LeetCode)-合并两个有序数组,字典,散列表
前言❤️笔芯❤️~
栈,队列,链表,集合
字典和散列表
集合,字典,散列表可以存储不重复的值
在字典中,使用[键,值]的形式来存储数据
散列表中也是以[键,值]对的形式来存储数据
字典中键名是用来查询特定元素的
字典数据结构的例子,一个实际的字典,以及一个地址簿
创建字典
123function Dictionary() { var items = {};}
使用到的方法:
set(key,value),向字典中添加新元素
delete(key),通过使用键值来从字典中移除键值对应的数据值
has(key),如果某个键值存在于这个字典中,则返回true,反之则返回false
get(key),通过键值查找特定的数值并返回
clear(),将这个字典中的所有元素全部删除
size(),返回字典所包含元素的数量
keys(),将字典所包含的所有键名以数组形式返回
values(),将字典所包含的所有数值以数组形式返回
has和set方法
示例:
123this.has = function(key) { return k ...
JavaScript的数据结构-集合
前言❤️笔芯❤️~
数组,栈,队列,链表
集合
集合是由一组无序且唯一的项组成的,(不能重复),可以理解为集合是一个既没有重复元素,也没有顺序概念的数组。
并集,交集,差集
12345// 使用ES6中的Set类function Set() { let items = {};}
add(value),向集合添加一个新的项
delete(value),从集合移除一个值
has(value),如果值在集合中,返回true,否则返回false
clear(),移除集合中的所有项
size(),返回集合所包含元素的数量
values(),返回一个包含集合中所有值的数组
has(value)方法
123this.has = function(value) { return value in items;};
123this.has = function(value) { return items.hasOwnProperty(value);};
实现add方法:
12345678this.ad ...
JavaScript数据结构之链表
前言❤️笔芯❤️~
链表
链表数据结构,向链表添加元素,从链表移除元素,使用LinkedList类,双向链表,循环链表。
链表存储有序的元素集合,但链表中的元素在内存中并不是连续放置的,每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(指针或链接)组成。
示例:
链表的好处:添加或移除元素的时候不需要移动其他元素
访问链表中间的一个元素,需要从起点(表头)开始迭代列表直到找到所需的元素
链表:生活中的寻宝游戏例子。
创建链表
1234567891011121314151617181920212223242526272829303132333435363738394041function LinkedList() { let Node = function(element) { // LinkedList数据结构还需要一个Node辅助类 this.element = element; this.next = null; }; // Node类表示要加入列表的项 // 它包含一个element属性,即要添加到列表的值,以及一个next ...
力扣 (LeetCode)-加一,队列
前言❤️笔芯❤️~
队列
队列数据结构,队列是遵循FIFO,先进先出,也有叫先来先服务,原则的一组有序的项。很像现实中的排队(最常见的队列的例子),排在第一位的人会先接受到服务。
创建队列:
12345678910111213141516171819202122// 声明类function Queue() { // 这里是属性和方法}// 一个用于存储队列中元素的数据结构:数组let items = [];// 向队列尾部添加一个或多个新的项enqueue(element(s))// 移除队列的第一项,并返回被移除的元素dequeue()// 返回队列中第一个元素,最先被添加,也将是最先被移除的元素,队列不做任何变动front()// 如果队列中不包含任何元素,返回true,不然返回falseisEmpty()// 返回队列包含的元素个数,与数组的length属性类似size()
向队列添加元素,新的项只能添加到队列末尾
实现的是enqueue方法
123this.enqueue = function(element) { items.push(e ...
原来也没有那么难!Vue商城开发
前言❤️笔芯❤️~
Vue跨平台开发使用Vue开发商城全流程的界面设计,如首页,产品展示,购物车,下单,会员界面等。(首页开发,用户管理,实现产品,新闻页面,购物,和订单处理)
Vue.js入门,数据绑定,表单和双向数据绑定,条件和循环指令,样式绑定,事件处理器,监听,和计算属性。
Vue.js组件,自定义指令和响应接口,路由,动画和过渡,Vue.js中的插件Axios。
Vue.js基础语法,数据绑定,表单使用,条件和循环指令,样式绑定,事件处理,监听和计算属性等。
Vue.js是一套构建用户界面的渐进式框架。
Vue只关注视图层,采用的是 自底向上 的 增量式开发设计。
12345678910111213141516171819// 引用Vue.js代码<script src="https://unpkg.com/vue/dist/vue.js"></script>// 示例<body> // 显示代码 <div id="app"> <p>{{mes ...
力扣 (LeetCode)-栈,括号生成
前言❤️笔芯❤️~
栈栈是一种 后进先出 的有序集合。新添加或待删除的元素都保存在栈的同一端,叫做栈顶,另外一端叫栈底。
创建栈
创建一个类来表示栈:(如何使用Stack类)
123function Stack() { // 各种属性和方法的声明}
声明数组,保存栈里的元素:
1let items = []
push(),添加一个或几个新元素到栈顶
pop(),移除栈顶的元素,同时返回被移除的元素
peek(),返回栈顶的元素,不对栈做任何修改
isEmpty(),如果栈里没有任何元素就返回true,否则返回false
clear(),移除栈里的所有元素
size(),返回栈里的元素个数
向栈添加元素(往栈里添加新元素)
示例:
1234// 只添加元素到栈顶,也就是栈的末尾this.push = function(element) { items.push(element);});
从栈移除元素(移出的是最后添加进去的元素)
示例:
123this.pop = function() { return items. ...
针对CSS说一说
前言❤️笔芯❤️~
CSS使用示例:
12345678910111213141516171819<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style></style> </head> <body> <div id="header"> <h1>导航栏</h1> <ul> <li><a href="#">目录1</a></li> <li><a href="#">目录2</a></li> <li><a href="#">目录3</a></li> < ...
力扣 (LeetCode)-最大子序和,JavaScript数据结构与算法(数组)
前言❤️笔芯❤️~
数组
数组是最简单的内存数据结构
数组存储一系列同一种数据类型的值,也可以在数组中保存不同类型的值
使用push方法,能把元素添加到数组的末尾,能添加任意个元素
使用unshift方法,可以把数值插入数组的首位
使用pop方法,可以删除数组里最后的元素
使用shift方法,删除数组的第一个元素
在任意位置添加或删除元素
使用splice方法,通过指定位置或索引,就可以删除相应位置和数量的元素。
示例:
12345678numbers.splice(5,3);// 删除了从数组索引5开始的3个元素numbers.splice(5, 0, 1,2,3);// 从索引5开始添加元素numbers.splice(5, 3, 1,2,3);// 从索引5开始删除了3个元素
二维数组
矩阵示例:
12345678//二层function printMatrix(myMatrix) { for (var i=0; i<myMatrix.length; i++){ for (var j=0; j<myMatrix[i].leng ...
力扣 (LeetCode)-合并两个有序链表,删除排序数组中的重复项,JavaScript笔记
前言❤️笔芯❤️~
21. 合并两个有序链表一、题目描述
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
12345678输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]输入:l1 = [], l2 = []输出:[]输入:l1 = [], l2 = [0]输出:[0]
二、思路分析
使用递归来解,将两个链表头部较小的一个与剩下的元素合并,并返回排好序的链表头,当两条链表中的一条为空时终止递归。
逐一比较最小
三、答案代码
123456789101112131415161718192021222324252627282930313233343536373839/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? ...
力扣 (LeetCode)-两数之和,有效的括号,两数相加
前言❤️笔芯❤️~
1. 两数之和一、题目描述:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
你可以按任意顺序返回答案。
示例 1:
123输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
12输入:nums = [3,2,4], target = 6输出:[1,2]
示例 3:
12输入:nums = [3,3], target = 6输出:[0,1]
二、思路分析:
可以遍历所有数字对,双重循环遍历当前值和另一个当前值与目标值是否相等,如果相等返回结果。
三、答案 代码:
输入数组,目标值
12345678910111213141516// 暴力搜索/*** @param {number[]} nums* @param {number} targe ...