剑指 offer set 25 求 1+2+...+n】的更多相关文章

题目 要求不能使用乘除法, for, while, if else, switch, case 等关键字 思路 1. 循环已经命令禁止, 禁用 if, 意味着递归也不能使用. 但即便如此, 我们仍然要围绕循环或递归作文章 2. 利用构造函数求解 #include <iostream> using namespace std; class Temp { public: Temp() { ++ N; Sum += N; cout << "constructing "…
1.1.题目1 剑指 Offer 29. 顺时针打印矩阵 1.2.解法 常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制. 创建res数组存放结果. 循坏开始,遍历完一行或者一列,就将该行从矩阵的范围内删除, 最终判断左边是否大于右边,上边是否大于下边来判断循环是否应该结束. 1.3.代码 class Solution { public int[] spiralOrder(int[][] matrix) { if (matrix.length==0) return new int…
一.题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 二.解题思路 求非递减数组旋转之后最小值,也就是寻找分界点,分界点前后都是非递减数组,分界点后面的非递减数组比分界点前面的数组都要小,因此对旋转数组按顺序查找,当出现后一个数比前一个小时,这个数就是最小值,若没…
面试25题:题目:合并两个排序的链表 题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路:递归,并需注意对空链表单独处理. 解题代码: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # 返回合并后列表 def Merge(self, pHead1, pHea…
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 题目分析 这道题有三种解法. 解法一 就是普通的解法,先复制节点,用p.next连接起来.然后再去设置p.random指针指向,不过这个设置又需要从头节点开始查. 所以总的时间复杂度为O(n2) 解法二 用map来保存<N,N`>,这样就很容易设置p.random了,比如…
  题目描述:   输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空).   解题思路:   本题有以下三种解法:   第一种:先按照next复制,然后依次添加random指针,添加时需要定位random的位置,定位一次需要一次遍历,需要O(n^2)的复杂度.   第二种:先按照next复制,然后用一个hashmap保存原节点和复制后…
求1+2+3...+n 牛客网 剑指Offer 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). class Solution: #run:23ms memory:5728k def Sum_Solution(self,n): fun = {False: self.sum0, True: self.sumN} return fun[not not n](n) def sum0(self, n)…
  本文为<剑指Offer>刷题笔记的总结篇,花了两个多月的时间,将牛客网上<剑指Offer>的66道题刷了一遍,以博客的形式整理了一遍,这66道题属于相对基础的算法题目,对于刷题练手是很好的实践,接下来会继续回到LeetCode,争取每天拿出一个小时,刷一到两道题.   本文主要对这66道题做一个总结,整体来看,这66道题,涉及到了常用的数据结构:数组.字符串.链表.树.二叉树.栈.队列,还有在编程中经常用到的数据操作和算法:循环.递归.查找.排序.回溯.动态规划.位运算.以下对…
leetcode是求当前所有数的二进制中1的个数,剑指offer上是求某一个数二进制中1的个数 https://www.cnblogs.com/grandyang/p/5294255.html 第三种方法,利用奇偶性找规律 class Solution { public: vector<int> countBits(int num) { vector<}; ;i <= num;i++){ == ) result.push_back(result[i/]); else result.…
整数中1出现的次数 牛客网 剑指Offer 题目描述 求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数). class Solution: #run:30ms memory:5720k def NumberOf1Between1AndN_So…