烟若柳尘

文章 评论 浏览 30

烟若柳尘 2022-05-04 13:54:38

力扣 25. K 个一组翻转链表

var reverseKGroup = function(head, k) {
    if (!head) return head
    let fast = head
    let i = k
    // 一. 判断是否够长
    while (i--) {
      if (fast) {
        fast = fast.next
      } else {
        return head
      }
    }
    // 二. 够长就翻转当前的k段
    let j = k
    let node = head
    let rev = null
    while (j--) {
      let temp = node.next
      node.next = rev
      rev = node
      node = temp
    }
    // 三. 递归
    head.next = reverseKGroup(node, k)
    return rev
};

不递归的写法

var reverseKGroup = function(head, k) {
    let reverseList = []
    let current = null
    let end = null
    let result = null
    while(head){
        if(reverseList.length < k){
            reverseList.push(head.val)
        }
        if(reverseList.length == k){
            while(reverseList.length>0){
                current = new ListNode(reverseList.pop())
                if(!end){
                    end = current
                }else{
                    end.next = current
                    end = current
                }
                if(!result){
                    result = current
                }

            }
        }
        head = head.next
    }
    while(reverseList.length>0){
        current = new ListNode(reverseList.shift())
        if(!end){
            end = current
        }else{
            end.next = current
            end = current
        }
        if(!result){
            result = current
        }

    }
    return result
};

第 138 题:反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序

烟若柳尘 2022-05-04 13:53:21
p.line {
    overflow: hidden;
    -ms-text-overflow: ellipsis;
    text-overflow: ellipsis;
    display:-webkit-box; //将对象作为弹性伸缩盒子模型显示。
    -webkit-box-orient:vertical; //从上到下垂直排列子元素(设置伸缩盒子的子元素排列方式)
    -webkit-line-clamp: 2; // 显示行数,超出两行隐藏且多余的用省略号表示...
    line-clamp: 2;
    max-width: 210px; // 有必要定义max-width
}

第 127 题:如何用 css 或 js 实现多行文本溢出省略效果,考虑兼容性

烟若柳尘 2022-05-04 13:49:37

这个primitify代码看的似懂非懂的,想尝试一下怎么用,但是不会用,能否有个例子让观摩学习一下

这样会好理解一点

function promisify (original) {
  return function () {
    return new Promise((resolve, reject) => {
      original(...arguments, (err, ...values) => {
        if (err) return reject(err);
        return resolve(...values);
      });
    });
  };
} 

ES6 系列之我们来聊聊 Promise

烟若柳尘 2022-05-04 12:22:51

@cendylee 就我看到的资料来说,好像是在task之间进行的。如果有更详细可靠的资料进行补充或更正当然更好。

从 Promise 来看 JavaScript 中的 Event Loop、Tasks 和 Microtasks

烟若柳尘 2022-05-04 10:22:50
Promise.prototype.myFinally = async function (cb) {
  const pr = this;
  try {
    await pr;
  } finally {
    cb && cb();
  }
};

const start = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const temp = Math.round(Math.random());
      if (temp > 0.5) {
        resolve(temp);
      } else {
        reject(temp);
      }
    }, 2000);
  });
};

start()
  .then((res) => {
    console.log("res", res);
  })
  .catch((err) => {
    console.log("err", err);
  })
  .myFinally(() => {
    console.log("finally");
  });

更多解析

第181题:Promise.prototype.finally 的作用,如何自己实现 Promise.prototype.finally?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文