• python_day_7:20180722


    周日下午,台风天,阵雨。继续练习Python。
    806. 写字符串需要的行数
    我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 widths ,这个数组 widths[0] 代表 'a' 需要的单位, widths[1] 代表 'b' 需要的单位,..., widths[25] 代表 'z' 需要的单位。
    现在回答两个问题:至少多少行能放下S,以及最后一行使用的宽度是多少个单位?将你的答案作为长度为2的整数列表返回。
    思路:关键是合成一张字典,k是字母表,v是widths,靠着这个字典,对S进行分析。关键控制两个变量:每行占据的资源occupy,当资源超过了最大范围100,lines行数就要+1,实现换行操作,同时occupy归零,在新的行上重新累加,最后返回[lines,occupy]构成的列表。
     1 class Solution:
     2     def numberOfLines(self, widths, S):
     3         lines=1
     4         zimu=dict(zip([chr(i) for i in range(97,123)],widths))
     5         occupy=0
     6         for i in S:            
     7             if occupy+zimu[i]<=100:
     8                 occupy+=zimu[i]
     9             else:
    10                 lines+=1
    11                 occupy=0
    12                 occupy+=zimu[i]
    13         return [lines,occupy]
    566. 重塑矩阵
    在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
    给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。
    重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
    如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
    思路:先判断reshape能否成功的关键是行数和列数r和c有没有弄对,r*c是不是和nums的元素数相等,如果是的话,再把所有的元素依次输出到new;ist里去,然后按照r行c列的要求,依次填充进result里去,最后返回result
     1 class Solution:
     2     def matrixReshape(self, nums, r, c):
     3         newlist=[]
     4         for i in nums:
     5             for j in i:
     6                 newlist.append(j)
     7         if len(newlist)==r*c:
     8             result=[[0 for row in range(c)] for column in range(r)]
     9             
    10             for i in range(len(newlist)):
    11                 result[int((i-i%c)/c)][i%c]=newlist[i]
    12             return result
    13         else:
    14             return nums
    566. 重塑矩阵
    在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
    给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。
    重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
    如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
    思路:先判断reshape能否成功的关键是行数和列数r和c有没有弄对,r*c是不是和nums的元素数相等,如果是的话,再把所有的元素依次输出到new;ist里去,然后按照r行c列的要求,依次填充进result里去,最后返回result
     1 class Solution:
     2     def matrixReshape(self, nums, r, c):
     3         newlist=[]
     4         for i in nums:
     5             for j in i:
     6                 newlist.append(j)
     7         if len(newlist)==r*c:
     8             result=[[0 for row in range(c)] for column in range(r)]
     9             
    10             for i in range(len(newlist)):
    11                 result[int((i-i%c)/c)][i%c]=newlist[i]
    12             return result
    13         else:
    14             return nums
  • 相关阅读:
    codeforces 459C Pashmak and Buses(模拟,组合数A)
    HDU 4639 Hehe(字符串处理,斐波纳契数列,找规律)
    HDU 1671 Phone List(字符处理)
    网页爬虫【原创】【开源】
    asp.net mvc 配合前端js的CMD模块化部署思想,小思路
    [转]阎宏博士的JAVA与模式
    [转]使用设计模式改善程序结构(三)
    [转]使用设计模式改善程序结构(二)
    [转]使用设计模式改善程序结构(一)
    html符号转换
  • 原文地址:https://www.cnblogs.com/codeinpy/p/9350542.html
Copyright © 2020-2023  润新知