首页 > 学院 > 开发设计 > 正文

Leetcode日记(12)

2019-11-06 09:12:33
字体:
来源:转载
供稿:网友

Rotate Image

问题描述

    You are given an n x n 2D matrix rePResenting an image.     Rotate the image by 90 degrees (clockwise).

分析

    顺时针将二维数组旋转90度,可以分为两个操作进行:先将数组的行列号相调换,然后对每行进行反转。

解答

class Solution {public: void rotate(vector<vector<int>>& matrix) { int num = matrix.size(); for (int i = 0; i < num; i++) for (int j = 0; j < i; j++) swap(matrix[i][j], matrix[j][i]); for (int i = 0; i < num; i++) reverse(matrix[i].begin(), matrix[i].end()); }};

Group Anagrams

问题描述

     Given an array of strings, group anagrams together.     For example, given: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],     Return:

[ ["ate", "eat","tea"], ["nat","tan"], ["bat"]]

分析

    使用STL可以较轻松的求解问题。

解答

class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map<string, multiset<string>> mp; for (string s : strs) { string t = s; sort(t.begin(), t.end()); mp[t].insert(s); } vector<vector<string>> anagrams; for (auto m : mp) { vector<string> anagram(m.second.begin(), m.second.end()); anagrams.push_back(anagram); } return anagrams; }};

Pow(x, n)

问题描述

     Implement pow(x, n).

分析

    可以使用位运算来求解问题。当然,这道题有多种解法。

解答

class Solution {public: double myPow(double x, int n) { if(n == 0) return 1; unsigned int nother; if(n < 0) { nother = -n; x = 1 / x; } else nother = n; double result = 1; while(nother > 0) { if( nother & 1) result *= x; x *= x; nother >>= 1; } return result; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表