ShaRai
BAN USERpublic static void FindMaxDiffIndices(int[] array)
{
int min = Int32.MaxValue;
int max = Int32.MinValue;
int max_i = 0, min_i = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] < min)
{
min = array[i];
min_i = i;
}
if (array[i] > max)
{
max = array[i];
max_i = i;
}
}
if (max_i > min_i)
Console.WriteLine("{0}, {1}", min_i, max_i);
else
{
int min1 = Int32.MaxValue;
int min1_i = 0;
for (int i = 0; i < max_i; i++)
{
if (array[i] < min1)
{
min1 = array[i];
min1_i = i;
}
}
int max1 = Int32.MinValue;
int max1_i = min_i;
for (int i = min_i; i < array.Length; i++)
{
if (array[i] > max1)
{
max1 = array[i];
max1_i = i;
}
}
if (max - min1 > max1 - min)
{
Console.WriteLine("{0}, {1}", min1_i, max_i);
}
else
{
Console.WriteLine("{0}, {1}", min_i, max1_i);
}
}
}
public static void FindMaxDiffIndices(int[] array)
{
int min = Int32.MaxValue;
int max = Int32.MinValue;
int max_i = 0, min_i = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] < min)
{
min = array[i];
min_i = i;
}
if (array[i] > max)
{
max = array[i];
max_i = i;
}
}
if (max_i > min_i)
Console.WriteLine("{0}, {1}", min_i, max_i);
else
{
int min1 = Int32.MaxValue;
int min1_i = 0;
for (int i = 0; i < max_i; i++)
{
if (array[i] < min1)
{
min1 = array[i];
min1_i = i;
}
}
int max1 = Int32.MinValue;
int max1_i = min_i;
for (int i = min_i; i < array.Length; i++)
{
if (array[i] > max1)
{
max1 = array[i];
max1_i = i;
}
}
if (max - min1 > max1 - min)
{
Console.WriteLine("{0}, {1}", min1_i, max_i);
}
else
{
Console.WriteLine("{0}, {1}", min_i, max1_i);
}
}
}
public void BuildBSTUsingPreOrder(int[] preOrder, TreeNode node, int index)
{
if (index == 0)
{
node = new TreeNode(preOrder[0]);
index = 1;
}
if (index >= preOrder.Count)
return;
if (preOrder[index - 1] <= preOrder[index])
{
node.Right = new TreeNode(preOrder[index]);
if (index < preOrder.Length - 1 && preOrder[index - 1] > preOrder[index + 1])
BuildBSTUsingPreOrder(preOrder, node, index + 1);
else
BuildBSTUsingPreOrder(preOrder, node.Right, index + 1);
}
else
{
node.Left = new TreeNode(preOrder[index]);
if (index < preOrder.Length - 1 && preOrder[index - 1] < preOrder[index + 1])
BuildBSTUsingPreOrder(preOrder, node, index + 1);
else
BuildBSTUsingPreOrder(preOrder, node.Left, index + 1);
}
}
Not sure if your code is right.. Try out
zero_count(new int[] { 0 }, 0, 0);
zero_count(new int[] { 0, 1 }, 0, 1);
zero_count(new int[] { 0, 1, 1 }, 0, 2);
zero_count(new int[] { 0, 0, 1 }, 0, 2);
zero_count(new int[] { 0, 0, 0, 0, 0, 1 }, 0, 5);
zero_count(new int[] { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 }, 0, 9);
zero_count(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 }, 0, 12);
public static int FindNumberOfZeroes(int[] array, int s, int e)
{
if (s > e)
return 0;
if (s == e)
return array[s] == 0 ? 1 : 0;
int m = s + (e - s) / 2;
if (array[m] == 1)
{
if (m > 1 && array[m - 1] == 0)
return m;
return FindNumberOfZeroes(array, s, m - 1);
}
else
{
if (m < array.Length - 1 && array[m + 1] == 1)
return m + 1;
return FindNumberOfZeroes(array, m + 1, e);
}
}
non-recursive solution if that matters..
public static string LongestPalindromeSubstring(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
string s_r = new string(charArray);
string palindrome = "";
for (int i = 0; i < s.Length; i++)
{
string prevSubPalin = "";
string currSubPalin = "";
for (int j = i; j < s.Length; j++)
{
if (s[j] == s_r[j - i])
{
currSubPalin = string.Concat(currSubPalin, s[j].ToString());
}
else
{
if (prevSubPalin.Length < currSubPalin.Length)
prevSubPalin = currSubPalin;
currSubPalin = "";
}
}
if (prevSubPalin.Length < currSubPalin.Length)
prevSubPalin = currSubPalin;
if (palindrome.Length < prevSubPalin.Length)
palindrome = prevSubPalin;
}
return palindrome;
}
public static bool PatternMatches(string s, string pattern)
{
int i = 0;
int j = 0;
char charToMatch = '\0';
while (true)
{
if (i == j && i == s.Length)
return true;
if (i < s.Length && j == pattern.Length)
return false;
if (pattern[j] != '*' && pattern[j] != '?')
{
if (s[i] == pattern[j])
{
i++;
j++;
continue;
}
else
return false;
}
if (pattern[j] == '?')
{
charToMatch = s[i];
i++;
j++;
continue;
}
Debug.Assert(charToMatch != '\0');
if (pattern[j] == '*')
{
while (s[i] == charToMatch && i < s.Length)
i++;
j++;
charToMatch = '\0';
}
}
}
public static void FindNumOfVisiblePoles(int[] poleHeights, int i)
{
int l = poleHeights.Length;
int j = i - 1;
int k = i + 1;
int count = 0;
while (j >= 0)
{
count++;
if (poleHeights[j] >= poleHeights[i])
break;
j--;
}
while (k < l)
{
count++;
if (poleHeights[k] >= poleHeights[i])
break;
k++;
}
Console.WriteLine(count + 1);
}
- ShaRai August 25, 2014