楼主: Lisrelchen
693 5

Coding Interviews: Questions, Analysis & Solutions [推广有奖]

  • 0关注
  • 62粉丝

VIP

已卖:4194份资源

院士

67%

还不是VIP/贵宾

-

TA的文库  其他...

Bayesian NewOccidental

Spatial Data Analysis

东西方数据挖掘

威望
0
论坛币
50288 个
通用积分
83.6306
学术水平
253 点
热心指数
300 点
信用等级
208 点
经验
41518 点
帖子
3256
精华
14
在线时间
766 小时
注册时间
2006-5-4
最后登录
2022-11-6

楼主
Lisrelchen 发表于 2017-6-21 08:11:28 |AI写论文
1论坛币





关键词:Interviews questions solutions Interview Analysis

沙发
Lisrelchen 发表于 2017-6-21 08:12:07
  1. Listing 3-1. C Code about Arrays and Pointers
  2. int GetSize(int data[]) {
  3.     return sizeof(data);
  4. }

  5. int _tmain(int argc, _TCHAR* argv[]) {
  6.     int data1[] = {1, 2, 3, 4, 5};
  7.     int size1 = sizeof(data1);

  8.     int* data2 = data1;
  9.     int size2 = sizeof(data2);

  10.     int size3 = GetSize(data1);

  11.     printf("%d, %d, %d", size1, size2, size3);
  12. }
复制代码

藤椅
Lisrelchen 发表于 2017-6-21 08:12:46
  1. Listing 3-2. Java Code to Get a Duplicated Number in an Array
  2. int duplicate(int numbers[]) {
  3.     int length = numbers.length;

  4.     int sum1 = 0;
  5.     for(int i = 0; i < length; ++i) {
  6.         if(numbers[i] < 0 || numbers[i] > length - 2)
  7.             throw new IllegalArgumentException("Invalid numbers.");

  8.         sum1 += numbers[i];
  9.     }

  10.     int sum2 = ((length - 1) * (length - 2)) >> 1;

  11.     return sum1 - sum2;
  12. }
复制代码

板凳
Lisrelchen 发表于 2017-6-21 08:13:13
  1. Listing 3-3. Java Code to Get a Duplicated Number in an Array
  2. int duplicate(int numbers[]) {
  3.     int length = numbers.length;
  4.     for(int i = 0; i < length; ++i) {
  5.         if(numbers[i] < 0 || numbers[i] > length - 1)
  6.             throw new IllegalArgumentException("Invalid numbers.");
  7.     }

  8.     for(int i = 0; i < length; ++i) {
  9.         while(numbers[i] != i) {
  10.             if(numbers[i] == numbers[numbers[i]]) {
  11.                 return numbers[i];
  12.             }

  13.             // swap numbers[i] and numbers[numbers[i]]
  14.             int temp = numbers[i];
  15.             numbers[i] = numbers[temp];
  16.             numbers[temp] = temp;
  17.         }
  18.     }

  19.     throw new IllegalArgumentException("No duplications.");
  20. }
复制代码

报纸
Lisrelchen 发表于 2017-6-21 08:13:48
  1. Listing 3-4. Java Code to Search in a Sorted Matrix
  2. boolean find(int matrix[][], int value) {
  3.     int rows = matrix.length;
  4.     int cols = matrix[0].length;
  5.     int start = 0;
  6.     int end = rows * cols - 1;

  7.     while (start <= end) {
  8.         int mid = start + (end - start) / 2;
  9.         int row = mid / cols;
  10.         int col = mid % cols;
  11.         int v = matrix[row][col];

  12.         if (v == value)
  13.             return true;

  14.         if (v > value)
  15.             end = mid - 1;
  16.         else
  17.             start = mid + 1;
  18.     }

  19.     return false;
  20. }
复制代码

地板
Lisrelchen 发表于 2017-6-21 08:15:50
  1. Listing 3-5. Java Code to Search in a Partially Sorted Matrix (Version 1)
  2. boolean find_solution1(int matrix[][], int value) {
  3.     int rows = matrix.length;
  4.     int cols = matrix[0].length;
  5.     return findCore(matrix, value, 0, 0, rows - 1, cols - 1);
  6. }

  7. boolean findCore(int matrix[][], int value, int row1, int col1, int row2, int col2) {
  8.     if(value < matrix[row1][col1] || value > matrix[row2][col2])
  9.         return false;

  10.     if(value == matrix[row1][col1] || value == matrix[row2][col2])
  11.         return true;

  12.     int copyRow1 = row1, copyRow2 = row2;
  13.     int copyCol1 = col1, copyCol2 = col2;

  14.     int midRow = (row1 + row2) / 2;
  15.     int midCol = (col1 + col2) / 2;

  16.     // find the last element less than value on diagonal
  17.     while((midRow != row1 || midCol != col1)
  18.             && (midRow != row2 || midCol != col2)) {
  19.         if(value == matrix[midRow][midCol])
  20.             return true;

  21.         if(value < matrix[midRow][midCol]) {
  22.             row2 = midRow;
  23.             col2 = midCol;
  24.         }
  25.         else {
  26.             row1 = midRow;
  27.             col1 = midCol;
  28.         }

  29.         midRow = (row1 + row2) / 2;
  30.         midCol = (col1 + col2) / 2;
  31.     }

  32.     // find value in two sub-matrices
  33.     boolean found = false;
  34.     if(midRow < matrix.length - 1)
  35.         found = findCore(matrix, value, midRow + 1, copyCol1, copyRow2, midCol);
  36.     if(!found && midCol < matrix[0].length - 1)
  37.         found = findCore(matrix, value, copyRow1, midCol + 1, midRow, copyCol2);

  38.     return found;
  39. }
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-21 11:09