zoukankan      html  css  js  c++  java
  • 左耳听风 ARTS Week 002

    要求:
    1.每周至少做一个 leetcode 的算法题

    2.阅读并点评至少一篇英文技术文章

    3.学习至少一个技术技巧

    4.分享一篇有观点和思考的技术文章

    1.每周至少做一个 leetcode 的算法题

     

    算法题:20.有效括号

    给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。

    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

    输入: "()[]{}"
    输出: true

    解答:

    class Solution {
        public boolean isValid(String s) {
            Stack<Character> stack = new Stack<>();
            char[] chars = s.toCharArray();
            for (char aChar : chars) {
                if (stack.size() == 0) {
                    stack.push(aChar);
                } else if (isSym(stack.peek(), aChar)) {
                    stack.pop();
                } else {
                    stack.push(aChar);
                }
            }
            return stack.size() == 0;
        }
        
        private boolean isSym(char c1, char c2) {
            return (c1 == '(' && c2 == ')') || (c1 == '[' && c2 == ']') || (c1 == '{' && c2 == '}');
        }
    }

    2.阅读并点评至少一篇英文技术文章

    看《鲁滨孙漂流记 中英版》第2章。

     

     

    3.学习至少一个技术技巧

     

    今天学的,交大的数据结构笔记:

    数据结构学位考:
    
    视频1:
    
    数据元素:数据的基本单位(学生)
    数据项:数据的最小单位(性别)
    数据对象:性质相同的数据元素的集合(班级)
    
    数据结构:数据元素之间的关系,结构(集合、线性、树形、图)
    
    
    数据结构的形式:Data_Structure=(D,S)
    
    逻辑结构(集合、线性、树形、图)
    物理结构(顺序、链式)
    
    算法:指令的有序序列。
    算法的五个特性:有穷性、确定性、可行性、输入、输出。
    
    空间复杂度估算方法:输入数据所占空间+程序所占空间+辅助变量所占空间
    
    
    顺序表的特点(用一位数组实现):
    1、逻辑结构与存储结构一致
    2、访问每个数据元素,花费的时间相同
    3、随机存取法
    
    
    线性表的链式表示:
    1、不要求连续
    2、不可以随机存取,插入删除方便
    3、需要2个域:数据域、指针域
    
    双向链表:每个结点有2个指针域,一个指向前驱,一个指向后继。
    
    顺序栈:top指向下一个元素将要存放的位置。
    
    栈空:top=base
    栈满:top-base>=stacksize
    
    队列:rear队尾插入数据,front队首删除数据。
    
    顺序队列:有假溢出(有些存储空间是有的,但是不能插入)的问题,用循环队列解决。
    
    循环队列,判断队空:Q.rear==Q.front
    循环队列,判断队满:(Q.rear+1) mod MaxSize==Q.front
    
    单链表,在P结点后插入S结点的语句:
    1、S->next=P->next;
    2、P->next=S;
    
    单链表,尾节点:P->next=NULL
    
    双向循环链表,在P结点后插入S结点(32141、S->next=P->next; S->prior=P;
    2、P->next->prior=S;P->next=S;
    
    
    双向循环链表,删除P结点的直接后继结点:
    1、R=P->next; P->next=R->next;(用R保存P的后继结点)
    2、R->next->prior=R->prior; free(R);
    
    
    双向循环量表,删除P结点:
    1、P->prior->next=P->next;
    2、P->next->prior=P->prior;
    3、free(P);
    
    
    视频2:
    
    树:只有一个根节点。
    
    结点的度:结点拥有的子树数。
    数的度:树内各结点度的最大值。
    深度:树中结点的最大层次。
    
    二叉树:第i层,至多有2^(i-1)个结点
    二叉树:深度(高度)为k的二叉树,至多有2^k-1个结点
    
    二叉树的顺序存储:补全为完全二叉树,从左到右、从上到下存储。(一般不采用顺序存储)
    
    二叉树的链式存储(二叉链表):lchild、data、rchild。
    
    遍历二叉树:先序、中序、后序。 
    
    线索二叉树:添加两个指针,前驱和后继。lchild、ltag、data、rtag、rchild。
    
    树的存储:双亲表示法、孩子表示法、带双亲的孩子链表
    
    哈夫曼树:最优树,带权路径长度最短的树。
    树的路径长度:从树根到每个结点的路径长度之和。
    
    哈夫曼树的构造过程:先选2个权值最小的。
    哈夫曼编码

    未完待续~

    4.分享一篇有观点和思考的技术文章

     

    我是一个线程:https://mp.weixin.qq.com/s/0V4JKxiRQEMCCaK_89pQGg

     

     

     

     

  • 相关阅读:
    Liunx cal
    Liunx read
    IOS
    IOS
    ARPSpoofing教程(四)
    ARPSpoofing教程(三)
    ARPSpoofing教程(二)
    数据结构与算法分析
    hdu 2034
    hdu 2042
  • 原文地址:https://www.cnblogs.com/amusement1992/p/10633916.html
Copyright © 2011-2022 走看看