剑指Offer 66

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def multiply(self, A):
 4         n = len(A)
 5         mat = [[1 for _ in range(n)]for _ in range(n)]
 6         for i in range(n):
 7             for j in range(n):
 8                 if i != j:
 9                     mat[i][j] = A[j]
10         B = [1] * n
11         for i in range(n):
12             mul = 1
13             for j in range(n):
14                 mul *= mat[i][j]
15             B[i] = mul
16         return B
17         # write code here

原文地址:https://www.cnblogs.com/asenyang/p/11025305.html

时间: 2024-10-16 23:27:25

剑指Offer 66的相关文章

剑指offer 66题 -- 连续子数组的最大和

class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { int maxNum =0x80000000; int curNum = 0; for(int i=0; i<array.size(); i++) { if(curNum <= 0) curNum = array[i]; else curNum += array[i]; if(curNum > maxNum) maxNum =

剑指offer 66题 -- 将一个字符串中的空格替换成“%20”

class Solution {public: void replaceSpace(char *str,int length) { //变量定义区 int newtv = 0; int oldtv = 0; int spaceNum = 0; //入参有效性判断 if( NULL == str || length <= 0) return; //计算空格数目 int i =0; while(str[i] != '\0') { oldtv++; if(str[i] == ' ') spaceNum

剑指offer 66题 -- 字符串的排列

class Solution {public: vector<string> Permutation(string str) { vector<string> result; if(str.size()<=0) return result; int start = 0; permute( str, start, result); sort( result.begin(), result.end() ); return result; } //采用传引用的方式,处理递归过程中的

剑指offer 66题 -- 丑数

class Solution {public: int GetUglyNumber_Solution(int index) { //变量定义区 int subA=0, subB=0, subC=0; int sub =0; int* array = new int[index]; array[0] = 1; if(index <= 0) return 0; //分析:数组的后面的每一个元素必定是由数组前面的某一个乘以2,3,或者5得到 //  也就是说, 每个当前的值,都是由前面的某个值的2倍,

[剑指Offer] 66.机器人的运动范围

题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18.但是,它不能进入方格(35,38),因为3+5+3+8 = 19.请问该机器人能够达到多少个格子? [思路]DFS 1 class Solution { 2 public: 3 int flag[1000][1000]; 4 int sum(i

剑指 offer 第一题: 二维数组中的查找

打算写 图解剑指 offer 66 题 的系列文章,不知道大家有没有兴趣 ?? 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 题目分析 图 1 如果没有头绪的话,很显然使用 暴力解法 是完全可以解决该问题的. 即遍历二维数组中的每一个元素,时间复杂度:O(n^2). 其实到这里我们就可以发现,使用这种暴力解法并没有充分利用题目给出的信息.这

剑指offer

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 链接:https://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba来源:牛客网 剑指Offer中有这道题目的分析.这是一道二分查找的

剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现

用字符串或者数组表示大数是一种很简单有效的表示方式.在打印1到最大的n为数的问题上采用的是使用数组表示大数的方式.在相关题实现任意两个整数的加法.减法.乘法的实现中,采用字符串对大数进行表示,不过在具体的计算中,还是要将字符串转化成字符数组来进行计算. 实现两个大数的加法,要考虑到两个问题,两个数的和的位数问题,以及如何处理两个数按位相加产生的进位问题.首先两个整数相加,两个数的和的位数最多比最大的整数的位数多1:这样和的位数就确定了.对于进位问题,我的做法是先进行按位相加,相加操作完成后再按照

剑指offer编程题Java实现——面试题7相关题用两个队列实现一个栈

剑指offer面试题7相关题目:用两个队列实现一个栈 解题思路:根据栈的先入后出和队列的先入先出的特点1.在push的时候,把元素向非空的队列内添加2.在pop的时候,把不为空的队列中的size()-1份元素poll出来,添加到另为一个为空的队列中,再把队列中最后的元素poll出来两个队列在栈不为空的情况下始终是有一个为空,另一个不为空的.push添加元素到非空的队列中,pop把非空队列的元素转移到另一个空的队列中,直到剩下最后一个元素,这个元素就是要出栈的元素(最后添加到队列中的元素). 1