zoukankan      html  css  js  c++  java
  • python:面试算法题

      1 '''
      2 1.买卖股票的最佳时机给定一个数组,它的第?i?个元素是一支给定股票第?i?天的价格。
      3 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
      4 注意你不能在买入股票前卖出股票。(5分)
      5      要求:
      6     1.输入: [7,1,5,3,6,4]
      7     2.输出: 5
      8     3.解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
      9     4.注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
     10 '''
     11 class Solution:
     12     def maxProfit(self, prices):
     13 
     14         max_profit1 = 0
     15         if len(prices) <= 1:
     16             return max_profit1
     17 
     18         min_profit = prices[0]
     19         max_profit2 = 0
     20         for index in range(len(prices)):
     21             if prices[index] <= min_profit:
     22                 min_profit = prices[index]
     23             elif prices[index] - min_profit > max_profit2:
     24                 max_profit2 = prices[index] - min_profit
     25         return max_profit2
     26 
     27 '''
     28 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
     29 Input:  [0,1,0,3,12]
     30 Output:  [1,3,12,0,0]
     31 '''
     32 class Solution1:
     33     def moveZeroes(self, nums):
     34         i = j = 0
     35         for i in range(len(nums)):
     36             if nums[i] != 0:
     37                 nums[j] , nums[i]= nums[i] , nums[j]
     38                 j += 1
     39 
     40 
     41 '''
     42 抓了a,b,c,d四名犯罪嫌疑人,其中有一人是小偷,审讯中:
     43 ?a说  我不是小偷;
     44 ?b说  c是小偷;
     45 ?c说  小偷肯定是d;
     46 ?d说  c胡说!
     47 其中有三个人说的是实话,一个人说的是假话,请编程推断谁是小偷(用穷举法和逻辑表达式)
     48 '''
     49 
     50 for i in range(4):
     51     i += 1
     52     if 3 == ((i != 1) + (i == 3) + (i == 4) + (i != 4)):
     53         # 利用ascii码表输出
     54         str = chr(96 + i) + "是小偷!"
     55         print(str)
     56 请手写插入查找算法,并且用注释写出思路,并且指出时间复杂度
     57 
     58 
     59 def charu(nums,order = 1):
     60     #第一个数不动,从第二个数开始比较
     61     for i in range(1,len(nums)):
     62         j=i-1
     63         tmp = nums[i] #记录本次待比较的词语
     64         while j >= 0:
     65             if tmp < nums[j]:
     66                 nums[j+1] = nums[j]
     67                 nums[j] = tmp
     68                 j = j-1
     69             else:
     70                 break
     71     if order == 1:
     72         return nums
     73     else:
     74         return nums[::-1]
     75 
     76 
     77 
     78 有1、2、3、4、5、6、7、8、9、10个数字,能组成多少个互不相同且无重复数字的五位数?都是多少?
     79 
     80 a = [1,2,3,4,5,6,7,8,9,10]
     81 def test2(a):
     82     i = 0
     83     for a in range(1, 5):
     84         for b in range(1, 5):
     85             for c in range(1, 5):
     86                 if a != b != c:
     87                     A = (a * 100 + b * 10 + c)
     88                     i += 1
     89                     print(A)
     90     print("一共有" + str(i) + "种排列")
     91 
     92 
     93 2.  二分查找
     94 
     95 1.def bin_search(data_set,val):
     96 2.    low = 0
     97 3.    high = len(data_set)-1
     98 4.    while low <= high:
     99 5.        mid = (low+high)//2    # 整除2
    100 6.        if data_set[mid] == val:    # 如果等于要查找的值,返回下标
    101 7.            return mid
    102 8.        elif data_set[mid] < val:   # 如果列表中间的值小于需要的值
    103 9.            low = mid + 1     # 则把最小的下标改成mid+1
    104 10.        else:    # 如果列表中间的值大于需要的值
    105 11.            high = mid - 1     # 则把最大的下标改成mid-1
    106 12.    return      # 如果没找到return空
    107 zhengze_phone=r'1[d]{10}'
    108 r'[w]+@[w]+.[w]{2,3}'
    代码.py
  • 相关阅读:
    支持向量机 (三): 优化方法与支持向量回归
    支持向量机 (二): 软间隔 svm 与 核函数
    支持向量机 (一): 线性可分类 svm
    拉格朗日乘子法
    特征选择: 卡方检验、F 检验和互信息
    Python 多进程、多线程效率比较
    Umi+Dva搭建Cesium 3D开发环境
    React 项目生产版本迭代页面不刷新问题
    React-Native学习手册----搭建基于ios平台的开发环境
    Cesium 绘制点、线、面和测距
  • 原文地址:https://www.cnblogs.com/qq128/p/12107075.html
Copyright © 2011-2022 走看看