其他分享
首页 > 其他分享> > 48-54 尝试每天两道题中 一道顺序 一道每日一题 遇到困难题可能是一道.

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

作者:互联网

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