小编Mon*_*ner的帖子

解释将NXN矩阵旋转90度的算法

我有一个算法将NXN矩阵旋转90度.它有效,但我很难理解.任何人都可以向我详细解释一下吗?谢谢.

 public static void rotate(int[][] matrix, int n) {

        for (int layer = 0; layer < n / 2; ++layer) {

            int first = layer;
            int last = n - 1 - layer;

            for(int i = first; i < last; ++i) {

                int offset = i - first;
                int top = matrix[first][i]; // save top

                // left -> top
                matrix[first][i] = matrix[last-offset][first];          

                // bottom -> left
                matrix[last-offset][first] = matrix[last][last - offset]; 

                // right -> bottom
                matrix[last][last - offset] = matrix[i][last]; …
Run Code Online (Sandbox Code Playgroud)

java algorithm

2
推荐指数
1
解决办法
2059
查看次数

计算总和等于给定数字的数组对?

我刚刚进行了在线编码访谈,其中一个问题是针对给定的整数数组,找出总和等于某个数字的对的数量(作为方法内的参数传递).例如,一个数组给出,

int[] a = {3, 2, 1, 45, 27, 6, 78, 9, 0};
int k = 9; // given number
Run Code Online (Sandbox Code Playgroud)

因此,将有2对(3,6)和(9,0),其总和等于9.值得一提的是,如何形成对并不重要.装置(3,6)和(6,3)将被视为同一对.我提供了以下解决方案(用Java)并且很想知道我是否错过了任何边缘情况?

public static int numberOfPairs(int[] a, int k ){

    int len = a.length;

    if (len == 0){
      return -1;
    }

    Arrays.sort(a);
    int count  = 0, left = 0, right = len -1; 

    while( left < right ){

        if ( a[left] + a[right] == k  ){

            count++; 

            if (a[left] == a[left+1] && left < len-1 ){
              left++;
            }

            if ( a[right] …
Run Code Online (Sandbox Code Playgroud)

java algorithm

1
推荐指数
1
解决办法
8674
查看次数

标签 统计

algorithm ×2

java ×2