shanfeng606

此路或有蹉跎,君莫忘必有灵犀相佐

  • 首页
  • 标签
  • 分类
  • 归档

自定义可分类可搜索的下拉框组件

发表于 2020-03-07 | 分类于 代码练习 , 项目实战

组件展示

源码链接:(https://github.com/shanfeng606/practice_04) 点击跳转

预览链接:(https://shanfeng606.github.io/practice_04/) 点击跳转

《剑指Offer》-06查找与排序

发表于 2020-03-06 | 分类于 算法

旋转数组的最小数字

题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

方法一:顺序遍历

1
2
3
4
5
6
7
8
9
10
11
12
function minNumberInRotateArray(rotateArray)
{
// write code here
if(rotateArray.length===0){
return 0;
}
for(var i=0;i<rotateArray.length-1;i++){
if(rotateArray[i]>rotateArray[i+1]){
return rotateArray[i+1];
}
}
}
阅读全文 »

《剑指Offer》-05栈与队列

发表于 2020-03-05 | 分类于 算法

用两个栈实现队列

题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var stack1=[],
stack2=[];
function push(node)
{
// write code here
stack1.push(node);//进栈
}

function pop()
{
// write code here
//两个都是空栈,说明此时队列是空的
if(stack1.length===0 && stack2.length===0)return;
//栈1元素传入栈2
if(stack2.length===0){
for (var i=stack1.length;i>0;i--){ //这里注意stack1的长度在改变,不能写成(var i=0;i<stack1.length;i++)
stack2.push(stack1.pop());
}
}
return stack2.pop();//出栈
}
阅读全文 »

圣杯布局与双飞翼布局

发表于 2020-03-04 | 分类于 布局

圣杯布局与双飞翼布局的目的

  • 三栏布局,中间一栏最先加载和渲染(内容最重要)
  • 两侧内容固定,中间内容随着宽度自适应
  • 一般用于PC网页

圣杯布局

提要:容器padding留白,内容float布局,宽度100%,注意除去浮动

具体代码实现:

阅读全文 »

《剑指Offer》-04链表

发表于 2020-03-03 | 分类于 算法

重建二叉树

题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function reConstructBinaryTree(pre, vin)
{
// write code here
if(pre.length===0||vin.length===0){
return null;
}
var index=vin.indexOf(pre[0]);

var node=new TreeNode(pre[0]);
node.left=reConstructBinaryTree(pre.slice(1,index+1),vin.slice(0,index+1));
node.right=reConstructBinaryTree(pre.slice(index+1),vin.slice(index+1));
return node;
}
阅读全文 »

《剑指Offer》-03链表

发表于 2020-03-02 | 分类于 算法

从尾到头打印链表

题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function printListFromTailToHead(head)
{
const stack=[];
let node=head;
while(node){
stack.push(node.val);
node=node.next;
}
return stack.reverse();
}
阅读全文 »

《剑指Offer》-02字符串

发表于 2020-03-01 | 分类于 算法

tip: 在VS Code中有一个插件——code runner,可以安装后直接运行在node 环境中,然后在vscode中输出文件的结果。


替换空格

题目描述 简单
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

方法一:正则

1
2
3
4
function replaceSpace(str)
{
return str.replace(/\s/g,"%20");
}
阅读全文 »

《剑指Offer》-01数组

发表于 2020-02-29 | 分类于 算法

二维数组中的查找

题目描述 【简单】
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Find(target, array)
{
// write code here
const col=array.length,
row=array[0].length;
//从矩阵左下角找起
let c=col-1,
r= 0 ;

while(c>=0 && r<=row-1){
if(array[c][r]<target){
r++;
}else if(array[c][r]>target){
c--;
}else{
return true;
}
}
return false;
}

总结:根据数组的规律,可从数组的左下或右上角找起,根据大小的方向性,依次排除掉列或者行。或者暴力法解题。

阅读全文 »

《黑客与画家》摘录

发表于 2020-02-24 | 分类于 课外读物

保罗 · 格雷厄姆有一套完整的创业哲学,他的创业公式是:

  1. 搭建原型
  2. 上线运营(别管 bug)
  3. 收集反馈
  4. 调整产品
  5. 成长壮大

  首先,他鼓励创业公司快速发布产品,因为这样可以尽早知道一个创意是否可行。其次,他认为一定要特别关注用户需要什么,这样才有办法将一个坏项目转变成好项目。

  「黑客」这个词不仅是第一流能力的象征,还包含着求解问题过程中产生的精神愉悦或享受。也就是说,从一开始,黑客就是有精神追求的。自由软件基金会创始人理查德· 斯托尔曼说:「出于兴趣而解决某个难题,不管它有没有用,这就是黑客。」

阅读全文 »

JavaScript ES语法学习笔记(五)

发表于 2020-02-19 | 分类于 ES

Callback(异步操作)

异步操作不会立马执行,优先同步操作
实际中应避免回调地狱

Promise then

promise就是为了解决“回调地狱”问题的,他可以优雅地处理异步操作

举个例子:
加载1.js,如果没有发生错误;
加载2.js,如果没有发生错误;
加载3.js,如果没有发生错误——做其他操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function loadScript (src) {
  return new Promise((resolve, reject) => {
    let script = document.createElement('script')
    script.src = src
    script.onload = () => resolve(src)// fulfilled,result 状态不可逆,只有一个执行
    script.onerror = (err) => reject(err)// rejected,error
    document.head.append(script)
  })
}

loadScript('./1.js')
  .then(() => {
    return loadScript('./4.js')
  }, (err) => {
    console.log(err)
  })
  .then(() => {
    loadScript('./3.js')
  }, (err) => {
    console.log(err)
  })
阅读全文 »
上一页1234下一页
SYF

SYF

从入门到入土

36 日志
16 分类
28 标签
© 2020 SYF
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4
0%