铛~铛~铛~ 上课钟声了 小猫想算出 上课钟声响12次的时间 你能帮他算算吗? 每周带孩子一起动动脑, 让孩子爱上趣味数学!
在学习今天内容之前,先学习上一篇的两数之和会更好哟 leetcode两数之和求解 一 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整给定一个包含 : [ [-1, 0, 1], [-1, -1, 2] ] 2 思路1---暴力解法 在思考两数之和解决方法的时候,我们使用了两层循环把所有的结果给求出来,相信读者很快就想到三数之和我就用三个循环, 从左侧开始,选定第一个数为定值比如下面的-4,然后左右指针分别指向对应位置如下图,是不是很像快排。 ? right]}); ++left, --right; //去重 //测试数据[-2,0,0,2,2 如果测试数据为[-2,0,0,2,2]。 ? 我想起在参考招聘要求的时候有句话是熟悉c/c++,java之一,同时了解python等脚本更好,所以在此放上python的方法。
刷题的时候 遇到我不会的题 然后 看了下评论区 答案 我自己半年前的 答案 竟然排在最上面 我自己竟然现在都做不上来了 所以还是 不能放下呀,天天练一下 不然两数之和 都不会 岂不是太丢人了
isPerfectSquare(self, num): l=0 r=num while (r-l > 1): mid=(l + r) / 2
nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ // addTwoNumbers 两数相加 l1->next; } if (l2) { n2 = l2->val; l2 = l2->next; } // 节点值相加。 * type ListNode struct { * Val int * Next *ListNode * } */ // addTwoNumbers 两数相加。 = nil { n2 = l2.Val l2 = l2.Next } // 节点值相加。 两数相加 - LeetCode
代码: public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //新链表的头的前一个结点 ListNode = null || l2 != null) { int a = l1 == null ? 0 : l1.val; int b = l2 == null ? =null){ l1=l1.next; } if (l2! =null){ l2=l2.next; } } //两个链表都遍历完了之后,如果有进位1,则补一个进位
示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 来源:力扣(LeetCode) 链接:https://leetcode-cn.com
但是,数组中同一个元素在答案里不能重复出现 你可以按任意顺序返回答案 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums 示例 2: 输入:nums = [3,2,4], target = 6 输出:[1,2] 示例 3: 输入:nums = [3,3], target = 6 输出:[0,1] 提示: 2 <= nums.length if nums[i] + nums[j] == target: return [i, j] return [] 复杂度分析 时间复杂度:O(N^2) ,其中 N 是数组中的元素数量;最坏情况下数组中任意两个数都要被匹配一次 空间复杂度:O(1) 正确答案二:哈希表 def twoSum2(nums: List[int], target: int) -
2. 两数相加 链接 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储 一位 数字。 = nil { sum += l2.Val l2 = l2.Next } carry = sum / 10 cur.Next = &ListNode{Val: sum % 10 } cur = cur.Next } return resPre.Next } // 递归实现 func addTwoNumbers2(l1 *ListNode, l2 *ListNode) *ListNode { return addTwoNumber(l1, l2, 0) } func addTwoNumber(l1 *ListNode, l2 *ListNode, add = nil { add += l2.Val l2 = l2.Next } node := ListNode{ Val: add % 10
this.next = next; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) =null||l2!=null){ x=l1==null? 0: l1.val; y=l2==null? 0 : l2.val; sum=x+y+carry; carry=sum/10; cur.next=new ListNode(sum%10); =null){ l1=l1.next; } if(l2! =null){ l2=l2.next; } } if(carry==1){//如果有进位, 下一位默认是1 cur.next
将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 = null || l2 != null) { int d1 = l1 == null ? 0 : l1.val; int d2 = l2 == null ? 0 : l2.val; int sum = d1 + d2 + carry; carry = sum >= 10 ? = null) { l2 = l2.next; } } if (carry == 1) cur.next = new
let p2=l2; let p3=q; let carry=0; while(p1||p2) { const v1=p1? p1.val:0; const v2=p2? p1与p2都有可能哦。 const v1=p1?p1.val:0; const v2=p2?p2.val:0; 然后是什么? 想加啊。 const val=v1+v2; 问题? carry=Math.floor(val/10); 放到相加的操作上. const val=v1+v2+carry; 然后是把个位上的数加到新链表上。 if(p1) { p1=p1.next; } if(p2) { p2=p2.next; } 然后是如果p1或者p2如果有值的话,就继续next,如果某一个没值就不next了。。
0 : l1->val) + (l2 == nullptr ? nullptr : l1->next; l2 = l2 == nullptr ? 0 : l1->val) + (l2 == nullptr ? 0 : l1->val) + (l2 == nullptr ? l1 : l1->next, l2 == nullptr ? l2 : l2->next, carry / 10); } };
不时更新力扣题库,使用python实现,比较通俗易懂,其中注释是我自己的理解: # 输入:l1 = [2,4,3], l2 = [5,6,4] # 输出:[7,0,8] # 解释:342 + 465 = : # 如果有一个listnode没有填写,就返回剩下一个即可 if l1 == None: return l2 if l2 == while l2: p.next = ListNode((l2.val + carry) % 10) carry = (l2.val + carry) // 10 # 更新carry位 l2 = l2.next # 更新l1,去掉当前头部第一个元素 (l1, l2) print(res.val)
将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 思路:三种情况需要循环,也就是只要有一个数字还有更高位或者有进位的时候 l1.val:0)+(l2!=null? l1.next:l1; l2= (l2!=null)? l2.next:l2; } return result.next; } } 【作者简介】: 秦怀,公众号【秦怀杂货店】作者,技术之路不在一时,山高水长,纵使缓慢
1 OLTP VS OLAP 1970年随着关系数据库理论的提出,诞生了一系列经典的RDBMS,如MySQL、Oracle、SQL Server、DB2等。 2 数仓 2.1 数仓简介 数仓发展 随着人类IT发展,数据越来越多被产生,并且这些数据还可能跨部门,跨业务。如何把数据集成起来进行OLAP是个巨大挑战。 数仓发展 对于数仓可以理解为原来各个数据孤岛中的数据可能存储位置、存储格式、编程语言等各个方面不同。数仓要做的就是把数据按照所需格式提取出来,进行转换、过滤、清洗。 2.4 元数据介绍 2.4.1 元数据定义 数仓的元数据Metadata是关于数据仓库中数据的数据。 :https://www.cnblogs.com/coco2015/p/11299620.html 数仓四万字:https://t.1yb.co/lQt2
1 OLTP VS OLAP 1970年随着关系数据库理论的提出,诞生了一系列经典的RDBMS,如MySQL、Oracle、SQL Server、DB2等。 2 数仓 2.1 数仓简介 ? 数仓发展 随着人类IT发展,数据越来越多被产生,并且这些数据还可能跨部门,跨业务。如何把数据集成起来进行OLAP是个巨大挑战。 数仓发展 对于数仓可以理解为原来各个数据孤岛中的数据可能存储位置、存储格式、编程语言等各个方面不同。数仓要做的就是把数据按照所需格式提取出来,进行转换、过滤、清洗。 集市层构建的好坏有一个比较好的衡量标准就是是否可以满足超过80%的应用层数据需要,剩下的20%来源于数仓层。 2.4 元数据介绍 2.4.1 元数据定义 数仓的元数据Metadata是关于数据仓库中数据的数据。
示例如下: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. ? 0:l1.val; int num2 = l2==null? 0:l2.val; 计算和(可能超过10): int sum = num1 + num2 + carry; 计算进位数值和sum余10结果: carry = sum = null) l2 = l2.next; 3.退出循环后,看进位是否为0,如果不为0,再新建节点: if(carry == 1){ currentNode.next = = null || l2 != null){ int num1 = l1==null?0:l1.val; int num2 = l2==null?
示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1 next) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) || index){ if(l1)index += l1->val; if(l2)index += l2->val; ListNode l2 = l2->next; } return T; } }; 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168892.
示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 解题思路 创建初始链表,用carry来记录进位 # Definition = ListNode(l2) re = ListNode(0) r = re carry = 0 while (l1 or l2): x = l1.val if l1 else 0 y = l2.val if l2 else 0 z = x + y + carry = None): l1 = l1.next if (l2 ! = None): l2 = l2.next #最后进位 if carry > 0: r.next = ListNode(1) return