以下是面试问题.
您将获得一个二叉树(不一定是BST),其中每个节点都包含一个值.设计一种算法来打印总计到该值的所有路径.请注意,它可以是树中的任何路径 - 它不必从根开始.
虽然我能够在树中找到从根开始的所有路径都有给定的总和,但是我无法对从不在根处开始的路径这样做.
我正在尝试编写一个方法,从Java中删除所有非字母字符String[],然后将String转换为小写字符串.我已经尝试使用正则表达式替换所有非字母字符的出现.""但是,我得到的输出不能这样做.这是代码
static String[] inputValidator(String[] line) {
for(int i = 0; i < line.length; i++) {
line[i].replaceAll("[^a-zA-Z]", "");
line[i].toLowerCase();
}
return line;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试提供具有非字母(例如-或.)的输入,则输出也包含它们,因为它们不会被删除.
示例输入
A dog is an animal. Animals are not people.
Run Code Online (Sandbox Code Playgroud)
我得到的输出
A
dog
is
an
animal.
Animals
are
not
people.
Run Code Online (Sandbox Code Playgroud)
预期的输出
a
dog
is
an
animal
animals
are
not
people
Run Code Online (Sandbox Code Playgroud) 我试图使用退格控制字符'\b'擦除行尾的尾随逗号.虽然它适用于没有其他输出的情况,但stdout如果之后有另一个输出'\b',它就变得无用了.这是一个例子:
#include <iostream>
using namespace std;
int main()
{
int a[] = { 1, 3, 4, 5, 6, 32, 321, 9};
for ( int i = 0; i < 8; i++) {
cout << a[i] << "," ;
}
cout << "\b" ;
//cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码块中,如果行被注释为看到的,我们得到所需的结果,在数字9之后没有逗号.但是,如果该行未注释,则逗号重新出现.
在我的程序中,我不希望逗号存在,但想在9之后得到一个结束语.我该怎么做?
我在接受采访时被问到:
从最大堆中获取min元素的最佳时间复杂度是多少?
我回答为O(1),假设堆大小已知,并且堆使用数组实现为二进制堆.按照我的假设,这样的最小值是heap_array[heap_size].
我的问题是,如果这个答案是正确的.如果没有,那么正确的答案是什么?
我是一个新的动态编程,并在SPOJ (http://www.spoj.pl/problems/KNAPSACK/)尝试了整数背包问题.但是,对于给定的测试用例,我的解决方案是没有给出正确的输出.如果您能建议我的以下实施是否正确,我将感谢您.请注意,该变量back用于回溯,我不知道该怎么做.我希望能帮助你实现回溯.谢谢.
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int knapsack(int value[], int weight[], int n, int C,
vector < int >&back)
{
int *M = new int[C + 1];
int k;
int i, j, tmp, pos;
for (i = 1; i <= C; i++) {
M[i] = M[i - 1];
pos = i - 1;
for (j = 0; j < n; j++) {
k = i - …Run Code Online (Sandbox Code Playgroud) 以下是一个面试问题,我无法以复杂性而非指数复杂性来回答这个问题.虽然它似乎是一个DP问题,但我无法形成基本案例并对其进行适当分析.任何帮助表示赞赏.
您将获得2个大小为'n'的数组.您需要稳定合并这些数组,以便在新数组中连续元素的乘积和最大化.
例如
A = {2,1,3}
B = {3,7,9}
在稳定合并A和B将给出一个带有'2n'元素的数组C,比如C = {c1,c2,c3,c4,c5,c6}你需要通过合并(稳定)A和B找到一个新的数组C,这样sum = c1*c2 + c3*c4 + c5*c6 ...... n是最大值.
我在只允许 HTTP/HTTPS 的防火墙后面。虽然我可以通过 HTTPS 拉取 git repos,但我无法通过 HTTP/HTTPS 推送它们。尽管 repo 托管在 github 上,这允许这样做,但我收到错误消息。这是我得到的错误:
user@ubuntu:~/crazykdeme/mirrored/news$ git push -u origin master
XML error: not well-formed (invalid token)
error: no DAV locking support on https://github.com/mynick/news.git/
fatal: git-http-push failed
Run Code Online (Sandbox Code Playgroud) 我想这是最常见的面试问题之一,但我无法以有效的方式解决它(有效意味着时间复杂度较低,使用合适的数据结构).问题是这样的:如果有一个m x n matrix字符(比如haystack)和给定char的长度为k的字符串(针).编写一个程序来检查大海捞针是否包含针头.请注意,我们只需要从上到下或从左到右搜索干草堆.例如
Haystack
ahydsfd
sdflddl
dfdfd
dfdl
uifddffdhc
Needle:
hdffi
Output:
Yes Found!!
Run Code Online (Sandbox Code Playgroud) 我正在学习动态规划,并尝试使用动态规划解决Project Euler 的问题 15。虽然我确实知道这个问题可以使用二项式系数来解决,但我想看看我学到了多少动态规划并因此尝试过。这是代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
using namespace std;
int main()
{
int gridsize;
cin>>gridsize;
int** grid = new int*[gridsize+1];
for ( int i = 0; i < gridsize+1; i++) {
grid[i] = new int[gridsize+1];
}
//Initialize the grid distances
for ( int i = 1; i <= gridsize ; i++) {
grid[i][0] = 1;
grid[0][i] = 1;
}
grid[0][0] = 0;
for ( int i = 1; i <= gridsize ; …Run Code Online (Sandbox Code Playgroud) 我已经尽力阅读了大部分关于此的文献,但仍然没有理解KMP算法中使用的失效函数是如何构建的.我一直指的是http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=stringSearching教程,大多数人都认为这很好.但是,我还是不明白.如果你能给我一个简单易懂的解释,我会感激不尽.