今日份算法 — 21. 合并两个有序链表 67. 二进制求和

编程入门 行业动态 更新时间:2024-10-26 18:27:04

今日份<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法 — 21. 合并两个有序链表 67. 二进制求和"/>

今日份算法 — 21. 合并两个有序链表 67. 二进制求和

更多算法实现见:

 

21. 合并两个有序链表

  • 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

代码如下:

/*** Definition for singly-linked list.* function ListNode(val) {*     this.val = val;*     this.next = null;* }*/
/*** @param {ListNode} l1* @param {ListNode} l2* @return {ListNode}*/
var mergeTwoLists = function(l1, l2) {let l3 = new ListNode(0);let p = l1, q = l2, r = l3;while(p != null && q != null) {if (p.val <= q.val) {r.next = p;r = r.next;p = p.next;} else {r.next = q;r = r.next;q = q.next;}}r.next = null;if (q != null) {r.next = q;}if (p != null) {r.next = p;}l3 = l3.next;return l3;
};

其他实现:

var mergeTwoLists = function(l1, l2) {if(!l1){return l2}    if(!l2){return l1}var headif(l1.val > l2.val){head = l2l2 = l2.next} else {head = l1l1 = l1.next}head.next = mergeTwoLists(l1, l2)return head
};

67. 二进制求和

  • 给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。

分析:为了方便后续的操作,需要将两字符串的长度设置为一样,所以在长度不足的字符串前面添加足够数目的0。从后往前遍历字符串,设置一个变量count表示是否需要进位,需要进位设count为1,无需进位则设count为0,设置数组存放计算后的结果。通过switch语句计算判断count、a[i]与b[i]三者和是多少,根据结果判断是否需要进位和当前值应设置为多少。判断到最好如果count值为1说明需还需要向前进一位。故向数组首部添加一个1。代码如下:

var addBinary = function(a, b) {let arr = [];let count = 0, aLen = a.length, bLen = b.length;let temS = "0".repeat(Math.abs(aLen - bLen));if (aLen > bLen) {b = temS + b;} else {a = temS + a;}for (let i = Math.max(aLen,bLen) - 1; i >= 0; i--) {switch (count + Number(a[i]) + Number(b[i])) {case 3:arr.unshift("1");count = 1;break;case 2:arr.unshift("0");count = 1;break;case 1:arr.unshift("1");count = 0;break;default:arr.unshift("0");count = 0;}}if (count == 1) {arr.unshift("1");}return arr.join("");
};

其他实现:

var addBinary = function(a, b) {let [i, j, c, s] = [a.length - 1, b.length - 1, 0, '']while (i >= 0 || j >= 0 || c === 1) {c += +(a[i--] || 0) + +(b[j--] || 0)s = (c & 1) + sc = c >> 1}return s
};

 

 

更多推荐

今日份算法 — 21. 合并两个有序链表 67. 二进制求和

本文发布于:2024-02-27 16:48:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707427.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   链表   两个   今日

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!