ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

48-54 尝试每天两道题中 一道顺序 一道每日一题 遇到困难题可能是一道.

2021-10-04 11:04:20  阅读:178  来源: 互联网

标签:return 48 题中 int cols 一道 rel each def


48:  旋转图像

采用四边界的方法  我喜欢这个 代码写出来很清晰.

在四个边界上互换  换完就收缩四个边界

 

代码:

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        right= down = len(matrix)-1
        left = top = 0
        while left<right:
            for i in range(right-left):
                temp = matrix[top][left+i]
                matrix[top][left+i] = matrix[down-i][left]
                matrix[down-i][left] = matrix[down][right-i]
                matrix[down][right-i] = matrix[top+i][right]
                matrix[top+i][right] = temp
            left +=1
            right-=1
            top+=1
            down-=1
        return matrix

作者:yizhu-jia
链接:https://leetcode-cn.com/problems/rotate-image/solution/shang-xia-zuo-you-si-ge-bian-jie-de-shou-z0ym/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

49: 字母异位分词

击败98的人!!!

就是对每个字符串排序 排序的结果加入字典 并且用字典记录他在结果数组中的位置
如果之后字符串字典里有这个排序后的串 说明之前有和他一组的 在那个位置上加一个就行!!
一次通过 好耶!

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        rel = []
        dict1 = {}
        i = 0
        for eachstr in strs:
            sortedstr = ''.join(sorted(eachstr))
            if sortedstr not in dict1:           #如果这个字符串没出现过  加入结果 并用字典记录位置
                dict1[sortedstr] = i
                rel.append([eachstr])
                i = i + 1
            else:          #如果出现过 将原字符串加入结果对应位置
                rel[dict1[sortedstr]].append(eachstr)

        return rel

作者:yizhu-jia
链接:https://leetcode-cn.com/problems/group-anagrams/solution/hao-ye-zi-ji-xiang-chu-lai-de-er-qie-da-nurlo/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

50: POW模拟

 

这题有个问题 python小数位数太长了 总是导致通不过  所以我i直接强制了 

class Solution:
    def myPow(self, x: float, n: int) -> float:
        def apow(x,n):
            i = 1
            y =x
            while i<n:
                y = y*y
                i = i*2
            if i-n>0:
                y = y /apow(x,i-n)
            return y
        y = apow(x,n)
        y=format(y, '.5f')
        if y == 'nan':
            y = 0
        return float(y)

作者:yizhu-jia
链接:https://leetcode-cn.com/problems/powx-n/solution/qiang-zhi-ba-nanbian-wei-0-by-yizhu-jia-ejpa/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

51:N皇后

: 普通的N皇后 普通的回溯

那天生病了 难受死了

class Solution:
    def solveNQueens(self, n: int) -> List[List[str]]:
        rel = []
        cols = [-100 for i in range(n)]
        def isvalid(cols,currow,curcol):
            for i in range(0,currow):
                if cols[i] == curcol:
                    return False
            for i in range(0,currow):
                m = i - currow   #行差
                n = cols[i] - curcol  #列差
                if m == n or m == -n:
                    return False
            return True
        def dfs(row):
            if row == n:
                currel = []
                for each in cols:
                    currel.append('.'*each+'Q'+'.'*(n-1-each))
                rel.append(currel)
            for col in range(n):
                if isvalid(cols,row,col):
                    cols[row] = col
                    dfs(row+1)
                    cols[row] = -100
        dfs(0)
        return rel


作者:yizhu-jia
链接:https://leetcode-cn.com/problems/n-queens/solution/pu-tong-de-nhuang-hou-pu-tong-de-hui-su-jciq6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

52:

又见N皇后 代码我都懒得改

还是改改把 我怀疑自己得了新冠

 

这两道题能不放在一起吗?

class Solution:
    def totalNQueens(self, n: int) -> int:
        rel=0
        cols = [-100 for i in range(n)]
        def isvalid(cols,currow,curcol):
            for i in range(0,currow):
                if cols[i] == curcol:
                    return False
            for i in range(0,currow):
                m = i - currow   #行差
                n = cols[i] - curcol  #列差
                if m == n or m == -n:
                    return False
            return True
        def dfs(row):
            nonlocal rel
            if row == n:
                rel+=1
            for col in range(n):
                if isvalid(cols,row,col):
                    cols[row] = col
                    dfs(row+1)
                    cols[row] = -100
        dfs(0)
        return rel

作者:yizhu-jia
链接:https://leetcode-cn.com/problems/n-queens-ii/solution/-by-yizhu-jia-wv2g/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

54:  很久之前做过了 

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int a=0;
        int b=nums[0];
        int c=nums[0];
        int n=nums.size();
        for(int i=0;i<n;i++)
        {
            a=a+nums[i];
            if(a>0)
            b=a;
            else
            {
               if (c > 0)
                 b = 0;
               else
                 b = a;
                 a = 0;
            }
            if(b>c)
            c=b;
        }
return c;
    }
};

 

又用python做了一下 可是为啥结果被大部分人击败...

def maxSubArray(num):
    cursub = 0
    maxsub = num[0]
    for each in num:
        cursub = cursub +each
        if cursub>0:
            temp = cursub         #temp 记录当前可能大于maxsub的序列和
        else:
            if maxsub>0:
                temp = 0
            else:
                temp = cursub           #记录下这个负数 因为这个负数也可能比maxsub大
            cursub = 0
        if temp > maxsub:               #将潜在可能性和最大值比较了 
            maxsub = temp
    return maxsub

54:螺旋矩阵 

 

老方法 我喜欢四面墙!!!!!!!堵住遍历的那个值 到头转向

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        rel = []
        top = left = 0
        n1 = len(matrix[0])
        n2 = len(matrix)
        right = n1-1
        down = n2-1
        while len(rel) < n1*n2:
            for i in range(left,right+1):       #第一行从左往右
                rel.append(matrix[top][i])
            top += 1
            if len(rel) == n1*n2:
                break
            for i in range(top,down+1):       #从上往下
                rel.append(matrix[i][right])
            right -= 1
            if len(rel) == n1*n2:
                break
            for i in range(right,left-1,-1):   #从右向左
                rel.append(matrix[down][i])
            down -= 1
            if len(rel) == n1*n2:
                break
            for i in range(down,top-1,-1):     #从下到上
                rel.append(matrix[i][left])
            left+=1
        return rel


作者:yizhu-jia
链接:https://leetcode-cn.com/problems/spiral-matrix/solution/si-mian-qiang-du-zhu-wang-qian-de-bu-fa-l7tg6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

这次送两道每日一题:

223 矩形面积: 

就是在看他们的X重叠了多少 y重叠了多少
重叠记得单独计算 放在数轴上 固定最左边的 然后右边分情况
最后面积和减去重叠的就行

虽然被多数人击败 但至少是我自己做的

class Solution:
    def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
        def getrep(a2,b1,b2):         #固定a1  看a2的相对位置有三种情况
            if a2<b1:
                return 0
            if a2 in range(b1,b2):
                return a2-b1
            if a2 >= b2:
                return b2-b1              
        if ax1 <= bx1:
            xrep = getrep(ax2,bx1,bx2)   保证少的那个在最左边
        else:
            xrep = getrep(bx2,ax1,ax2)
        if ay1 <= by1:
            yrep = getrep(ay2,by1,by2)
        else:
            yrep = getrep(by2,ay1,ay2)
        return (ax2-ax1)*(ay2-ay1)+(bx2-bx1)*(by2-by1)-xrep*yrep

作者:yizhu-jia
链接:https://leetcode-cn.com/problems/rectangle-area/solution/ha-ha-ha-ha-ha-ha-ha-ha-ha-yi-ci-cheng-w-1udu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1436 : 旅行终点站

找出口   入口和 出口肯定只出现过一次
用一个字典, 遍历站点 没见过就加入字典 见过就删除之前的,因为出现两次的肯定不是答案 。
最后剩一个入口一个出口用值区分它们

class Solution:
    def destCity(self, paths: List[List[str]]) -> str:
        dict1= {}
        for each in paths:
            if each[0] not in dict1 :      #先看each[0]  没见过就加入
                dict1[each[0]] = 0
            else:                   #之前见过就删
                del dict1[each[0]]
            if each[1] not in dict1:
                dict1[each[1]] = 1
            else:
                del dict1[each[1]]
        for each in dict1:
            if dict1[each] == 1:        #出口被赋的值是1
                return each


作者:yizhu-jia
链接:https://leetcode-cn.com/problems/destination-city/solution/mei-xiang-dao-jie-guo-huan-bu-cuo-python-k1f6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

标签:return,48,题中,int,cols,一道,rel,each,def
来源: https://www.cnblogs.com/xiaoli1996/p/15365934.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有