CC150 19.11

19.11 Design an algorithm to find all pairs of integers within an array which sum to a specified value.

// Assume a is not null.
//
// a is not sorted.
//
// Option 1 is using a set.
List<Pair<Integer, Integer>> sumUpTo(int[] a, int sum)
{
  // Option 1
  Map<Integer> set = new HashSet<>();
  
  List<Pair<Integer, Integer>> toReturn = new ArrayList<>();
  for (int i : a)
  {
    if (set.contains(i))
    {
      toReturn.add(Pair.of(i , sum - i));
    }
    else
    {
      set.add(sum - i);
    }
  }
  return toReturn;
  
  // Option 2
  // Not use a set, but use a bit map.
  BitSet bs = new BitSet();
  for (int i : a)
  {
    if (bs.get(i))
      toReturn.add(Pair.of(i , sum - i));
    else
      bs.set(sum - i);
  }
  return toReturn;
  
  
  // Option 3
  // Sort first, and iterate from both beginning and end.
  List<Pair<Integer, Integer>> toReturn = new ArrayList<>();
  int[] sorted = sortAsc(a);
  int l = 0;
  int r = sorted.length - 1;
  while (l < r)
  {
    if (a[l] + a[r] < sum)
    {
      l ++;
    }
    else if (a[l] + a[r] > sum)
    {
      r --;
    }
    else  // ==
    {
      toReturn.add(Pair.Of(a[l], a[r]));
      l ++;
      r --;
    }
  }
  return toReturn;  
}
时间: 2024-10-10 05:05:57

CC150 19.11的相关文章

11.18 Apache用户认证11.19 11.20 域名跳转11.21 Apache访问日志

11.18 Apache用户认证更改虚拟主机内容vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf增加用户名与密码? /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming-c是创建 -m指定类型查看生成的密码文档内容上面已经他去了.htpasswd目录,再创建用记就不需要-c在wi上指定域名hostsC:\Windows\System32\drivers\etc认证:没有

Update 19.11 for Azure Sphere

今天,微软发布了面向Azure Sphere的19.11更新,其主要亮点就是加入了对开发工具Visual Studio Code和Linux开发环境的支持.具体来讲,本次更新包含3个部分: 1. Azure Sphere 系统. This quality release fixes an error in I2C reads that was reported on MSDN and an error in which SPI reads or writes may cause the syst

java 19 - 11 异常的注意事项

1 /* 2 * 异常注意事项: 3 * A:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类.(父亲坏了,儿子不能比父亲更坏) 4 * B:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常 5 * C:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws 6 */ 7 import java.text.ParseException; 8 import j

【codeforces 19/11/06 div2】A. Maximum Square

1 #include<iostream> 2 #include<algorithm> 3 #include<map> 4 using namespace std; 5 6 map<int, int>cnt; 7 8 int main() 9 { 10 int T; 11 cin >> T; 12 while (T--) 13 { 14 cnt.clear(); 15 int n; 16 cin >> n; 17 for (int i

【codeforces 19/11/06 div2】C. Tile Painting

1 #include <iostream> 2 using namespace std; 3 4 typedef long long LL; 5 6 LL gcd(LL a, LL b) 7 { 8 if (!b) return a; 9 return gcd(b, a % b); 10 } 11 12 int min(int a, int b) 13 { 14 return a < b ? a : b; 15 } 16 17 int main() 18 { 19 LL x; 20 ci

【codeforces 19/11/06 div2】D. 0-1 MST

1 #include<iostream> 2 #include<set> 3 #include<map> 4 #include<queue> 5 #include<algorithm> 6 using namespace std; 7 8 const int maxn = 100010; 9 int n, m; 10 set<int>e[maxn]; 11 set<int>node; 12 int fa[maxn]; 13

CC150 20.11

20.11 Imagine you have a square matrix, where each cell is filled with either black or white. Design an algorithm to find the maximum subsquare such that all four borders are filled with black pixels. // A brute force solution. // n * n // iterate fr

CC150 19.1

// See http://www.hawstein.com/posts/19.1.html // 19.1 Write a function to swap a number in place without temporary variables. class CC19_1 { void swap() { int a; int b; a = a + b; b = a - b; a = a - b; } // or void swap() { int a; int b; a = a ^ b;

CC150 19.2

19.2 Design an algorithm to figure out if someone has won in a game of tic-tac-toe. class TicTacToe {   enum Tic   {     X, O       }      // Given TicTacToe map, wheter t has won the game.   // Assume map is a not-null 3*3 matrix, containing no null