lintcode入门篇四

142. O(1)时间检测2的幂次

用 O(1) 时间检测整数 n 是否是 2 的幂次。

样例

Example 1:
	Input: 4
	Output: true

Example 2:
	Input:  5
	Output: false

挑战

O(1) time

第一种方法:&的方法

class Solution:
    """
    @param n: An integer
    @return: True or false
    """
    ‘‘‘
    1.使用递归的方法来进行判断
    2.相与的方法来进行判断
    比如:16 与 15相与,因为16 二进制位10000,15减去1二进制位01111  相与>>00000
    或者 1&0 >> 0
    其他不是2的幂次的情况:
    15&14  01111 & 01110  >>01110
    ‘‘‘
    def checkPowerOf2(self, n):
        # write your code here
        if n&(n-1) == 0:
            return True
        return false

第二种方法:递归的方法

class Solution:
    """
    @param n: An integer
    @return: True or false
    """
    def checkPowerOf2(self, n):
        # write your code here
        if n == 2 or n ==1:
            return True
        if n%2 == 1 or n == 0:
            return  False
        return self.checkPowerOf2(n//2)

平方根,平方,立方:

1.求平方根,int(pow(n,0.5))

2.求平方,pow(n,2)

3.求立方,pow(n,3)

157. 判断字符串是否没有重复字符

中文English

实现一个算法确定字符串中的字符是否均唯一出现

样例

样例 1:

输入:  "abc_____"
输出:  false

样例 2:

输入:  "abc"
输出:  true

挑战

如果不使用额外的存储空间,你的算法该如何改变?

class Solution:
    """
    @param: str: A string
    @return: a boolean
    """
    def isUnique(self, str):
        # write your code here
        for s in str:
            if str.count(s) !=1:
                return False
        return  True

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12195522.html

时间: 2024-08-29 13:36:20

lintcode入门篇四的相关文章

【SSRS】入门篇(四) -- 向报表添加数据

原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到报表设计图画上,如下图: 1.打开在[SSRS]入门篇(一) -- 创建SSRS项目 建立的报表Sales Orders.rdl: 2.从工具箱把"表"拖放到"设计图画": 注:如果左边没有显示工具箱的话,可以通过"菜单 -> 视图 -> 工具箱&

FPGA基础入门篇(四) 边沿检测电路

FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电路设计中相当的广泛. 没有复位的情况下,正常的工作流程如下: (1)D触发器经过时钟clk的触发,输出trigger信号,保存了t0时刻的信号. (2)同时由trigger通过非门输出信号,保留了当前时刻t1的触发信号 (3)经过与门输出信号pos_edge,neg_edge a) 只有t0时刻为高

lintcode入门篇二

一. 最大子数组 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 样例 样例1: 输入:[−2,2,−3,4,−1,2,1,−5,3] 输出:6 解释:符合要求的子数组为[4,−1,2,1],其最大和为 6. 样例2: 输入:[1,2,3,4] 输出:10 解释:符合要求的子数组为[1,2,3,4],其最大和为 10. 挑战 要求时间复杂度为O(n) 注意事项 子数组最少包含一个数 输入测试数据 (每行一个参数)如何理解测试数据? 第一种解法:O(n)时间复杂度 class Sol

lintcode入门篇一

1.反转一个只有3位数的整数. 样例 样例 1: 输入: number = 123 输出: 321 样例 2: 输入: number = 900 输出: 9 注意事项 你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000. class Solution: """ @param number: A 3-digit number. @return: Reversed number. """ def reverseIntege

lintcode入门篇三

一. 两数之和 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. 样例 Example1: 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1]. Example2: 给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2]. 挑战 Either of the

lintcode入门篇五

158. 两个字符串是变位词 写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串. 样例 样例 1: 输入: s = "ab", t = "ab" 输出: true 样例 2: 输入: s = "abcd", t = "dcba" 输出: true 样例 3: 输入: s = "ac", t = "ab" 输出: false 挑战 O(n)

lintcode入门篇六

185. 矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 样例 1: 输入: [[1]] 输出: [1] 样例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12] ] 输出: [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12] class Solution: ''' 1.首先i,j都不能小于0,并且i<len(matrix) and j<len(mat

lintcode入门篇七

211. 字符串置换 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 样例 Example 1: Input: "abcd", "bcad" Output: True Example 2: Input: "aac", "abc" Output: False class Solution: """ @param A:

lintcode入门篇十五

846. 多关键字排序 中文English 给定 n 个学生的学号(从 1 到 n 编号)以及他们的考试成绩,表示为(学号,考试成绩),请将这些学生按考试成绩降序排序,若考试成绩相同,则按学号升序排序. 样例 样例1 输入: array = [[2,50],[1,50],[3,100]] 输出: [[3,100],[1,50],[2,50]] 样例2 输入: array = [[2,50],[1,50],[3,50]] 输出: [[1,50],[2,50],[3,50]] class Solut